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

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

diff --git a/queue-4.14/ethtool-check-the-return-value-of-get_regs_len.patch b/queue-4.14/ethtool-check-the-return-value-of-get_regs_len.patch
new file mode 100644 (file)
index 0000000..906d645
--- /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
+@@ -890,8 +890,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);
+@@ -1392,6 +1397,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 128e6e0806cc654b0345e4287903ad99159e5169..8eedef1e0b1e87c76373ac2653494810c9e1810b 100644 (file)
@@ -34,3 +34,4 @@ qmi_wwan-add-quirk-for-quectel-dynamic-config.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