aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-06-12 13:06:58 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-06-12 13:06:58 +0200
commite83aff3d719a7246e087021feae68d29bb8df699 (patch)
tree7df20b49a130f5f7ad8329ae3afb789e3672fb65
parent304699e35ed310910af41f9b1bbc08c4da473a8d (diff)
downloadqueue-3.18-e83aff3d719a7246e087021feae68d29bb8df699.tar.gz
another patch
-rw-r--r--ethtool-check-the-return-value-of-get_regs_len.patch50
-rw-r--r--series1
2 files changed, 51 insertions, 0 deletions
diff --git a/ethtool-check-the-return-value-of-get_regs_len.patch b/ethtool-check-the-return-value-of-get_regs_len.patch
new file mode 100644
index 0000000..0b9b704
--- /dev/null
+++ b/ethtool-check-the-return-value-of-get_regs_len.patch
@@ -0,0 +1,50 @@
+From f9fc54d313fab2834f44f516459cdc8ac91d797f Mon Sep 17 00:00:00 2001
+From: Yunsheng Lin <linyunsheng@huawei.com>
+Date: Wed, 26 Dec 2018 19:51:46 +0800
+Subject: ethtool: check the return value of get_regs_len
+
+From: Yunsheng Lin <linyunsheng@huawei.com>
+
+commit f9fc54d313fab2834f44f516459cdc8ac91d797f 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>
+
+---
+ net/core/ethtool.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+--- a/net/core/ethtool.c
++++ b/net/core/ethtool.c
+@@ -404,8 +404,13 @@ static noinline_for_stack int ethtool_ge
+ 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);
+
+@@ -856,6 +861,9 @@ static int ethtool_get_regs(struct net_d
+ return -EFAULT;
+
+ reglen = ops->get_regs_len(dev);
++ if (reglen <= 0)
++ return reglen;
++
+ if (regs.len > reglen)
+ regs.len = reglen;
+
diff --git a/series b/series
index dc8a222..80297f5 100644
--- a/series
+++ b/series
@@ -73,4 +73,5 @@ genwqe-prevent-an-integer-overflow-in-the-ioctl.patch
drm-gma500-cdv-check-vbt-config-bits-when-detecting-lvds-panels.patch
fs-stream_open-opener-for-stream-like-files-so-that-read-and-write-can-run-simultaneously-without-deadlock.patch
fuse-add-fopen_stream-to-use-stream_open.patch
+ethtool-check-the-return-value-of-get_regs_len.patch
crypto-gcm-fix-incompatibility-between-gcm-and-gcm_base.patch