Blob Blame History Raw
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;