|
@@ -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)))
|