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

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

diff --git a/queue-4.9/ethtool-check-the-return-value-of-get_regs_len.patch b/queue-4.9/ethtool-check-the-return-value-of-get_regs_len.patch
new file mode 100644 (file)
index 0000000..81de670
--- /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
+@@ -878,8 +878,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);
+@@ -1380,6 +1385,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 42f2cac494fad4e010f078f2c9f8ac032b4f6bfb..8fb246ffb0d1f96ac5e9599e124ace26f0e90205 100644 (file)
@@ -82,3 +82,4 @@ tty-serial_core-add-install.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