From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Mon, 13 Sep 2021 21:58:26 +0200
Subject: ethtool: prevent endless loop if eeprom size is smaller than
announced
Patch-mainline: v5.16-rc1
Git-commit: b9bbc4c1debc837ba56872fb3b2499ba6459ca8b
References: jsc#PED-1495
It shouldn't happen, but can happen that readable eeprom size is smaller
than announced. Then we would be stuck in an endless loop here because
after reaching the actual end reads return eeprom.len = 0. I faced this
issue when making a mistake in driver development. Detect this scenario
and return an error.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
net/ethtool/ioctl.c | 4 ++++
1 file changed, 4 insertions(+)
--- a/net/ethtool/ioctl.c
+++ b/net/ethtool/ioctl.c
@@ -1537,6 +1537,10 @@ static int ethtool_get_any_eeprom(struct
ret = getter(dev, &eeprom, data);
if (ret)
break;
+ if (!eeprom.len) {
+ ret = -EIO;
+ break;
+ }
if (copy_to_user(userbuf, data, eeprom.len)) {
ret = -EFAULT;
break;