Linux USB
 help / color / mirror / Atom feed
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

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox