From: sashiko-bot@kernel.org
To: "Chih Kai Hsu" <hsu.chih.kai@realtek.com>
Cc: linux-usb@vger.kernel.org
Subject: Re: [PATCH net-next v7 08/10] r8152: add TGPHY register access for RTL8157 and RTL8159
Date: Thu, 15 Oct 2026 08:20:36 +0000 [thread overview]
Message-ID: <sashiko-outbox-172466@kernel.org> (raw)
In-Reply-To: <20261014081904.6491-9-nic_swsd@realtek.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] net: mii: corrupted PHY write-backs on negative error codes
--
commit 2f3d9bfec100e921469b287bd26fd9b2d7f8a3db
Author: Chih Kai Hsu <hsu.chih.kai@realtek.com>
Subject: r8152: add TGPHY register access for RTL8157 and RTL8159
This commit adds TGPHY register access for the RTL8157 and RTL8159 chips.
It changes the r8152_mdio_read function to return an int so that TGPHY
hardware timeouts can return negative error codes.
> diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
> index 558ccb4682c27..7c0de56266963 100644
> --- a/drivers/net/usb/r8152.c
> +++ b/drivers/net/usb/r8152.c
> @@ -1664,16 +1675,33 @@ static void ocp_reg_write(struct r8152 *tp, u16 addr, u16 data)
>
> -static inline int r8152_mdio_read(struct r8152 *tp, u32 reg_addr)
> +static int r8152_mdio_read(struct r8152 *tp, u32 reg_addr)
> {
> - return ocp_reg_read(tp, OCP_BASE_MII + reg_addr * 2);
> + u16 data;
> + int ret;
> +
> + ret = ocp_reg_read(tp, OCP_BASE_MII + reg_addr * 2, &data);
> +
> + return ret < 0 ? ret : data;
> }
[Severity: High]
Does this code inadvertently corrupt PHY settings during a read timeout?
The commit message notes that the MII library callbacks still ignore the
status and need care, but propagating these negative error codes introduces
an immediate regression.
When r8157_phy_read() times out, r8152_mdio_read() returns -110
(-ETIMEDOUT). This negative value propagates through read_mii_word() to
the standard MII library without being sanitized.
For example, it can happen in mii_nway_restart():
drivers/net/mii.c:mii_nway_restart() {
...
bmcr = mii->mdio_read(mii->dev, mii->phy_id, MII_BMCR);
if (bmcr & BMCR_ANENABLE) {
bmcr |= BMCR_ANRESTART;
mii->mdio_write(mii->dev, mii->phy_id, MII_BMCR, bmcr);
...
}
Because -110 is 0xFFFFFF92 in two's complement, the bitwise check
bmcr & BMCR_ANENABLE evaluates to true (0xFFFFFF92 has the 12th bit, 0x1000,
set).
The callback then incorrectly ORs BMCR_ANRESTART (0x0200) and writes the
corrupted value (0xFF92) back to the MII_BMCR PHY register. This
inadvertently triggers the Reset (0x8000), Loopback (0x4000), and Power
Down (0x0800) bits, turning a transient timeout into a persistent link
failure.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261014081904.6491-1-nic_swsd@realtek.com?part=8
next prev parent reply other threads:[~2026-10-15 8:20 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-14 8:18 [PATCH net-next v7 00/10] r8152: refactor and extend RTL8157/8159 support Chih Kai Hsu
2026-10-14 8:18 ` [PATCH net-next v7 01/10] r8152: split r8156_init by generation and factor out wait_autoload_done Chih Kai Hsu
2026-10-15 8:20 ` sashiko-bot
2026-10-14 8:18 ` [PATCH net-next v7 02/10] r8152: add new init writes for RTL8156/8156B/8157/8159 Chih Kai Hsu
2026-10-15 8:20 ` sashiko-bot
2026-10-14 8:18 ` [PATCH net-next v7 03/10] r8152: split RTL_VER_17 into QFN68 and QFN100 package variants Chih Kai Hsu
2026-10-15 8:20 ` sashiko-bot
2026-10-14 8:18 ` [PATCH net-next v7 04/10] r8152: split rtl8156_enable/up/down into per-generation functions Chih Kai Hsu
2026-10-15 8:20 ` sashiko-bot
2026-10-14 8:18 ` [PATCH net-next v7 05/10] r8152: fix up and down register settings for RTL8156/8156B/8157/8159 Chih Kai Hsu
2026-10-15 8:20 ` sashiko-bot
2026-10-14 8:19 ` [PATCH net-next v7 06/10] r8152: split r8157_hw_phy_cfg into RTL8157 and RTL8159 variants Chih Kai Hsu
2026-10-15 8:20 ` sashiko-bot
2026-10-14 8:19 ` [PATCH net-next v7 07/10] r8152: add rtl8157_unload and rtl8157_change_mtu Chih Kai Hsu
2026-10-15 8:20 ` sashiko-bot
2026-10-14 8:19 ` [PATCH net-next v7 08/10] r8152: add TGPHY register access for RTL8157 and RTL8159 Chih Kai Hsu
2026-10-15 8:20 ` sashiko-bot [this message]
2026-10-14 8:19 ` [PATCH net-next v7 09/10] r8152: extract rtl_fc_pause_pkt_en() and apply it to RTL8156/8157/8159 Chih Kai Hsu
2026-10-15 8:20 ` sashiko-bot
2026-10-14 8:19 ` [PATCH net-next v7 10/10] r8152: enable UPS for RTL8157 and RTL8159 QFN68 Chih Kai Hsu
2026-10-15 8:20 ` sashiko-bot
2026-10-14 8:25 ` [PATCH net-next v7 00/10] r8152: refactor and extend RTL8157/8159 support netdev-bot+sinfo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=sashiko-outbox-172466@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=hsu.chih.kai@realtek.com \
--cc=linux-usb@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.