Message ID | 1545825106-103343-1-git-send-email-linyunsheng@huawei.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net] ethtool: check the return value of get_regs_len | expand |
From: Yunsheng Lin <linyunsheng@huawei.com> Date: Wed, 26 Dec 2018 19:51:46 +0800 > 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> > --- > Note: There is not Fixes tags for this becuase the ops is added > before the git is used. Applied, thanks.
diff --git a/net/core/ethtool.c b/net/core/ethtool.c index d054028..158264f 100644 --- a/net/core/ethtool.c +++ b/net/core/ethtool.c @@ -793,8 +793,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); @@ -1337,6 +1342,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;
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> --- Note: There is not Fixes tags for this becuase the ops is added before the git is used. --- net/core/ethtool.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)