[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1545825106-103343-1-git-send-email-linyunsheng@huawei.com>
Date: Wed, 26 Dec 2018 19:51:46 +0800
From: Yunsheng Lin <linyunsheng@...wei.com>
To: <davem@...emloft.net>
CC: <f.fainelli@...il.com>, <keescook@...omium.org>,
<wang6495@....edu>, <jakub.kicinski@...ronome.com>,
<ilyal@...lanox.com>, <ecree@...arflare.com>, <mkubecek@...e.cz>,
<ynorov@...iumnetworks.com>, <stephen@...workplumber.org>,
<netdev@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
Yunsheng Lin <linyunsheng@...wei.com>
Subject: [PATCH net] ethtool: check the return value of get_regs_len
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@...wei.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(-)
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;
--
2.8.1
Powered by blists - more mailing lists