Re: [PATCH net] net: usb: lan78xx: reject invalid EEPROM write requests

From: Andrew Lunn

Date: Thu Oct 08 2026 - 21:27:54 EST


On Fri, Oct 09, 2026 at 02:57:02AM +0200, Stefano Munari wrote:
> The runtime PM handling removed the -EINVAL return for invalid
> EEPROM/OTP write requests. These requests now return zero from a
> successful usb_autopm_get_interface() call, even though no data is
> written.
>
> Set ret to -EINVAL for invalid requests while preserving the runtime
> PM reference release.
>
> Fixes: 8a7ffeb795f8 ("lan78xx: Fix for eeprom read/write when device auto suspend")
> Signed-off-by: Stefano Munari <stefanomunari.sm@xxxxxxxxx>
> ---
> Tested on a Raspberry Pi 3 Model B+ with the onboard Ethernet
> controller, using raspberrypi/linux commit bba53a117a4a on the
> rpi-6.6.y branch as the baseline.
>
> ethtool -E eth0 magic 0 offset 0 length 1 value 0
>
> The command succeeds without the patch and reports "Invalid argument"
> with the patch applied.
> ---
> drivers/net/usb/lan78xx.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
> index 5655941f1478..7ac263454d45 100644
> --- a/drivers/net/usb/lan78xx.c
> +++ b/drivers/net/usb/lan78xx.c
> @@ -1719,6 +1719,8 @@ static int lan78xx_ethtool_set_eeprom(struct net_device *netdev,
> (ee->len == 512) &&
> (data[0] == OTP_INDICATOR_1))
> ret = lan78xx_write_raw_otp(dev, ee->offset, ee->len, data);
> + else
> + ret = -EINVAL;

It might be the nested if's without {} which caused the broken patch?

Maybe add some brackets to make it clearer?

Andrew