netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] net: ethtool: Return -EOPNOTSUPP if user space tries to read EEPROM with lengh 0
@ 2014-10-31  3:50 Guenter Roeck
  2014-10-31  3:56 ` Andrew Lunn
  0 siblings, 1 reply; 3+ messages in thread
From: Guenter Roeck @ 2014-10-31  3:50 UTC (permalink / raw)
  To: netdev; +Cc: David S. Miller, Andrew Lunn, linux-kernel, Guenter Roeck

If a driver supports reading EEPROM but no EEPROM is installed in the system,
the driver's get_eeprom_len function returns 0. ethtool will subsequently
try to read that zero-length EEPROM anyway. If the driver does not support
EEPROM access at all, this operation will return -EOPNOTSUPP. If the driver
does support EEPROM access but no EEPROM is installed, the operation will
return -EINVAL. Return -EOPNOTSUPP in both cases for consistency.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
 net/core/ethtool.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index 1600aa2..06dfb29 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -1036,7 +1036,8 @@ static int ethtool_get_eeprom(struct net_device *dev, void __user *useraddr)
 {
 	const struct ethtool_ops *ops = dev->ethtool_ops;
 
-	if (!ops->get_eeprom || !ops->get_eeprom_len)
+	if (!ops->get_eeprom || !ops->get_eeprom_len ||
+	    !ops->get_eeprom_len(dev))
 		return -EOPNOTSUPP;
 
 	return ethtool_get_any_eeprom(dev, useraddr, ops->get_eeprom,
@@ -1052,7 +1053,8 @@ static int ethtool_set_eeprom(struct net_device *dev, void __user *useraddr)
 	u8 *data;
 	int ret = 0;
 
-	if (!ops->set_eeprom || !ops->get_eeprom_len)
+	if (!ops->set_eeprom || !ops->get_eeprom_len ||
+	    !ops->get_eeprom_len(dev))
 		return -EOPNOTSUPP;
 
 	if (copy_from_user(&eeprom, useraddr, sizeof(eeprom)))
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] net: ethtool: Return -EOPNOTSUPP if user space tries to read EEPROM with lengh 0
  2014-10-31  3:50 [PATCH] net: ethtool: Return -EOPNOTSUPP if user space tries to read EEPROM with lengh 0 Guenter Roeck
@ 2014-10-31  3:56 ` Andrew Lunn
  2014-10-31 20:13   ` David Miller
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Lunn @ 2014-10-31  3:56 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: netdev, David S. Miller, Andrew Lunn, linux-kernel

On Thu, Oct 30, 2014 at 08:50:15PM -0700, Guenter Roeck wrote:
> If a driver supports reading EEPROM but no EEPROM is installed in the system,
> the driver's get_eeprom_len function returns 0. ethtool will subsequently
> try to read that zero-length EEPROM anyway. If the driver does not support
> EEPROM access at all, this operation will return -EOPNOTSUPP. If the driver
> does support EEPROM access but no EEPROM is installed, the operation will
> return -EINVAL. Return -EOPNOTSUPP in both cases for consistency.
> 
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>

root@dir665:~# ethtool -e lan4
Cannot get EEPROM data: Operation not supported

Tested-by: Andrew Lunn <andrew@lunn.ch>

Thanks
	Andrew

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] net: ethtool: Return -EOPNOTSUPP if user space tries to read EEPROM with lengh 0
  2014-10-31  3:56 ` Andrew Lunn
@ 2014-10-31 20:13   ` David Miller
  0 siblings, 0 replies; 3+ messages in thread
From: David Miller @ 2014-10-31 20:13 UTC (permalink / raw)
  To: andrew; +Cc: linux, netdev, linux-kernel

From: Andrew Lunn <andrew@lunn.ch>
Date: Fri, 31 Oct 2014 04:56:35 +0100

> On Thu, Oct 30, 2014 at 08:50:15PM -0700, Guenter Roeck wrote:
>> If a driver supports reading EEPROM but no EEPROM is installed in the system,
>> the driver's get_eeprom_len function returns 0. ethtool will subsequently
>> try to read that zero-length EEPROM anyway. If the driver does not support
>> EEPROM access at all, this operation will return -EOPNOTSUPP. If the driver
>> does support EEPROM access but no EEPROM is installed, the operation will
>> return -EINVAL. Return -EOPNOTSUPP in both cases for consistency.
>> 
>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> 
> root@dir665:~# ethtool -e lan4
> Cannot get EEPROM data: Operation not supported
> 
> Tested-by: Andrew Lunn <andrew@lunn.ch>

Applied, thanks everyone.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-10-31 20:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-31  3:50 [PATCH] net: ethtool: Return -EOPNOTSUPP if user space tries to read EEPROM with lengh 0 Guenter Roeck
2014-10-31  3:56 ` Andrew Lunn
2014-10-31 20:13   ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).