mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-15 05:11:32 +00:00
net: ethtool: Return -EOPNOTSUPP if user space tries to read EEPROM with lengh 0
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> Tested-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1e19e084ea
commit
e0fb6fb6d5
@ -1036,7 +1036,8 @@ static int ethtool_get_eeprom(struct net_device *dev, void __user *useraddr)
|
|||||||
{
|
{
|
||||||
const struct ethtool_ops *ops = dev->ethtool_ops;
|
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 -EOPNOTSUPP;
|
||||||
|
|
||||||
return ethtool_get_any_eeprom(dev, useraddr, ops->get_eeprom,
|
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;
|
u8 *data;
|
||||||
int ret = 0;
|
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;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
if (copy_from_user(&eeprom, useraddr, sizeof(eeprom)))
|
if (copy_from_user(&eeprom, useraddr, sizeof(eeprom)))
|
||||||
|
Loading…
Reference in New Issue
Block a user