Skip to content

Commit

Permalink
ethtool: check the return value of get_regs_len
Browse files Browse the repository at this point in the history
commit f9fc54d upstream.

The return type for get_regs_len in struct ethtool_ops is int,
the hns3 driver may return error when failing to get the regs
len by sending cmd to firmware.

Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: Michal Kubecek <mkubecek@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Yunsheng Lin authored and Greg Kroah-Hartman committed Jun 11, 2019
1 parent 647f72b commit f1d7eeb
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions net/core/ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -428,8 +428,13 @@ static noinline_for_stack int ethtool_get_drvinfo(struct net_device *dev,
if (rc >= 0)
info.n_priv_flags = rc;
}
if (ops->get_regs_len)
info.regdump_len = ops->get_regs_len(dev);
if (ops->get_regs_len) {
int ret = ops->get_regs_len(dev);

if (ret > 0)
info.regdump_len = ret;
}

if (ops->get_eeprom_len)
info.eedump_len = ops->get_eeprom_len(dev);

Expand Down Expand Up @@ -883,6 +888,9 @@ static int ethtool_get_regs(struct net_device *dev, char __user *useraddr)
return -EFAULT;

reglen = ops->get_regs_len(dev);
if (reglen <= 0)
return reglen;

if (regs.len > reglen)
regs.len = reglen;

Expand Down

0 comments on commit f1d7eeb

Please sign in to comment.