diff mbox series

[net] ethtool: check the return value of get_regs_len

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

Commit Message

Yunsheng Lin Dec. 26, 2018, 11:51 a.m. UTC
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(-)

Comments

David Miller Dec. 29, 2018, 5:25 a.m. UTC | #1
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 mbox series

Patch

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;