]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 10 Jun 2019 14:25:25 +0000 (16:25 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 10 Jun 2019 14:25:25 +0000 (16:25 +0200)
added patches:
ethtool-check-the-return-value-of-get_regs_len.patch

queue-4.4/ethtool-check-the-return-value-of-get_regs_len.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/ethtool-check-the-return-value-of-get_regs_len.patch b/queue-4.4/ethtool-check-the-return-value-of-get_regs_len.patch
new file mode 100644 (file)
index 0000000..9d1a12c
--- /dev/null
@@ -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
+@@ -428,8 +428,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);
+@@ -883,6 +888,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;
index 4cd4abc3e05c750bf4841cf660ecf4fcfd8cf04a..aeff1e951187abe2be50909a6df40f42cd0924b0 100644 (file)
@@ -240,3 +240,4 @@ 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
 ipv4-define-__ipv4_neigh_lookup_noref-when-config_inet-is-disabled.patch
+ethtool-check-the-return-value-of-get_regs_len.patch