]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 18 Oct 2021 11:07:52 +0000 (13:07 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 18 Oct 2021 11:07:52 +0000 (13:07 +0200)
added patches:
ethernet-s2io-fix-setting-mac-address-during-resume.patch
net-arc-select-crc32.patch
net-encx24j600-check-error-in-devm_regmap_init_encx24j600.patch
net-korina-select-crc32.patch

queue-4.4/ethernet-s2io-fix-setting-mac-address-during-resume.patch [new file with mode: 0644]
queue-4.4/net-arc-select-crc32.patch [new file with mode: 0644]
queue-4.4/net-encx24j600-check-error-in-devm_regmap_init_encx24j600.patch [new file with mode: 0644]
queue-4.4/net-korina-select-crc32.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/ethernet-s2io-fix-setting-mac-address-during-resume.patch b/queue-4.4/ethernet-s2io-fix-setting-mac-address-during-resume.patch
new file mode 100644 (file)
index 0000000..2eb527b
--- /dev/null
@@ -0,0 +1,51 @@
+From 40507e7aada8422c38aafa0c8a1a09e4623c712a Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Wed, 13 Oct 2021 16:35:49 +0200
+Subject: ethernet: s2io: fix setting mac address during resume
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 40507e7aada8422c38aafa0c8a1a09e4623c712a upstream.
+
+After recent cleanups, gcc started warning about a suspicious
+memcpy() call during the s2io_io_resume() function:
+
+In function '__dev_addr_set',
+    inlined from 'eth_hw_addr_set' at include/linux/etherdevice.h:318:2,
+    inlined from 's2io_set_mac_addr' at drivers/net/ethernet/neterion/s2io.c:5205:2,
+    inlined from 's2io_io_resume' at drivers/net/ethernet/neterion/s2io.c:8569:7:
+arch/x86/include/asm/string_32.h:182:25: error: '__builtin_memcpy' accessing 6 bytes at offsets 0 and 2 overlaps 4 bytes at offset 2 [-Werror=restrict]
+  182 | #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
+      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
+include/linux/netdevice.h:4648:9: note: in expansion of macro 'memcpy'
+ 4648 |         memcpy(dev->dev_addr, addr, len);
+      |         ^~~~~~
+
+What apparently happened is that an old cleanup changed the calling
+conventions for s2io_set_mac_addr() from taking an ethernet address
+as a character array to taking a struct sockaddr, but one of the
+callers was not changed at the same time.
+
+Change it to instead call the low-level do_s2io_prog_unicast() function
+that still takes the old argument type.
+
+Fixes: 2fd376884558 ("S2io: Added support set_mac_address driver entry point")
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Link: https://lore.kernel.org/r/20211013143613.2049096-1-arnd@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/neterion/s2io.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/neterion/s2io.c
++++ b/drivers/net/ethernet/neterion/s2io.c
+@@ -8625,7 +8625,7 @@ static void s2io_io_resume(struct pci_de
+                       return;
+               }
+-              if (s2io_set_mac_addr(netdev, netdev->dev_addr) == FAILURE) {
++              if (do_s2io_prog_unicast(netdev, netdev->dev_addr) == FAILURE) {
+                       s2io_card_down(sp);
+                       pr_err("Can't restore mac addr after reset.\n");
+                       return;
diff --git a/queue-4.4/net-arc-select-crc32.patch b/queue-4.4/net-arc-select-crc32.patch
new file mode 100644 (file)
index 0000000..5d4ac4a
--- /dev/null
@@ -0,0 +1,43 @@
+From e599ee234ad4fdfe241d937bbabd96e0d8f9d868 Mon Sep 17 00:00:00 2001
+From: Vegard Nossum <vegard.nossum@oracle.com>
+Date: Tue, 12 Oct 2021 11:34:46 +0200
+Subject: net: arc: select CRC32
+
+From: Vegard Nossum <vegard.nossum@oracle.com>
+
+commit e599ee234ad4fdfe241d937bbabd96e0d8f9d868 upstream.
+
+Fix the following build/link error by adding a dependency on the CRC32
+routines:
+
+  ld: drivers/net/ethernet/arc/emac_main.o: in function `arc_emac_set_rx_mode':
+  emac_main.c:(.text+0xb11): undefined reference to `crc32_le'
+
+The crc32_le() call comes through the ether_crc_le() call in
+arc_emac_set_rx_mode().
+
+[v2: moved the select to ARC_EMAC_CORE; the Makefile is a bit confusing,
+but the error comes from emac_main.o, which is part of the arc_emac module,
+which in turn is enabled by CONFIG_ARC_EMAC_CORE. Note that arc_emac is
+different from emac_arc...]
+
+Fixes: 775dd682e2b0ec ("arc_emac: implement promiscuous mode and multicast filtering")
+Cc: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
+Link: https://lore.kernel.org/r/20211012093446.1575-1-vegard.nossum@oracle.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/arc/Kconfig |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/ethernet/arc/Kconfig
++++ b/drivers/net/ethernet/arc/Kconfig
+@@ -19,6 +19,7 @@ config ARC_EMAC_CORE
+       tristate
+       select MII
+       select PHYLIB
++      select CRC32
+ config ARC_EMAC
+       tristate "ARC EMAC support"
diff --git a/queue-4.4/net-encx24j600-check-error-in-devm_regmap_init_encx24j600.patch b/queue-4.4/net-encx24j600-check-error-in-devm_regmap_init_encx24j600.patch
new file mode 100644 (file)
index 0000000..add4029
--- /dev/null
@@ -0,0 +1,123 @@
+From f03dca0c9e2297c84a018e306f8a9cd534ee4287 Mon Sep 17 00:00:00 2001
+From: Nanyong Sun <sunnanyong@huawei.com>
+Date: Tue, 12 Oct 2021 20:59:01 +0800
+Subject: net: encx24j600: check error in devm_regmap_init_encx24j600
+
+From: Nanyong Sun <sunnanyong@huawei.com>
+
+commit f03dca0c9e2297c84a018e306f8a9cd534ee4287 upstream.
+
+devm_regmap_init may return error which caused by like out of memory,
+this will results in null pointer dereference later when reading
+or writing register:
+
+general protection fault in encx24j600_spi_probe
+KASAN: null-ptr-deref in range [0x0000000000000090-0x0000000000000097]
+CPU: 0 PID: 286 Comm: spi-encx24j600- Not tainted 5.15.0-rc2-00142-g9978db750e31-dirty #11 9c53a778c1306b1b02359f3c2bbedc0222cba652
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
+RIP: 0010:regcache_cache_bypass drivers/base/regmap/regcache.c:540
+Code: 54 41 89 f4 55 53 48 89 fb 48 83 ec 08 e8 26 94 a8 fe 48 8d bb a0 00 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 4a 03 00 00 4c 8d ab b0 00 00 00 48 8b ab a0 00
+RSP: 0018:ffffc900010476b8 EFLAGS: 00010207
+RAX: dffffc0000000000 RBX: fffffffffffffff4 RCX: 0000000000000000
+RDX: 0000000000000012 RSI: ffff888002de0000 RDI: 0000000000000094
+RBP: ffff888013c9a000 R08: 0000000000000000 R09: fffffbfff3f9cc6a
+R10: ffffc900010476e8 R11: fffffbfff3f9cc69 R12: 0000000000000001
+R13: 000000000000000a R14: ffff888013c9af54 R15: ffff888013c9ad08
+FS:  00007ffa984ab580(0000) GS:ffff88801fe00000(0000) knlGS:0000000000000000
+CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 000055a6384136c8 CR3: 000000003bbe6003 CR4: 0000000000770ef0
+DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
+DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
+PKRU: 55555554
+Call Trace:
+ encx24j600_spi_probe drivers/net/ethernet/microchip/encx24j600.c:459
+ spi_probe drivers/spi/spi.c:397
+ really_probe drivers/base/dd.c:517
+ __driver_probe_device drivers/base/dd.c:751
+ driver_probe_device drivers/base/dd.c:782
+ __device_attach_driver drivers/base/dd.c:899
+ bus_for_each_drv drivers/base/bus.c:427
+ __device_attach drivers/base/dd.c:971
+ bus_probe_device drivers/base/bus.c:487
+ device_add drivers/base/core.c:3364
+ __spi_add_device drivers/spi/spi.c:599
+ spi_add_device drivers/spi/spi.c:641
+ spi_new_device drivers/spi/spi.c:717
+ new_device_store+0x18c/0x1f1 [spi_stub 4e02719357f1ff33f5a43d00630982840568e85e]
+ dev_attr_store drivers/base/core.c:2074
+ sysfs_kf_write fs/sysfs/file.c:139
+ kernfs_fop_write_iter fs/kernfs/file.c:300
+ new_sync_write fs/read_write.c:508 (discriminator 4)
+ vfs_write fs/read_write.c:594
+ ksys_write fs/read_write.c:648
+ do_syscall_64 arch/x86/entry/common.c:50
+ entry_SYSCALL_64_after_hwframe arch/x86/entry/entry_64.S:113
+
+Add error check in devm_regmap_init_encx24j600 to avoid this situation.
+
+Fixes: 04fbfce7a222 ("net: Microchip encx24j600 driver")
+Reported-by: Hulk Robot <hulkci@huawei.com>
+Signed-off-by: Nanyong Sun <sunnanyong@huawei.com>
+Link: https://lore.kernel.org/r/20211012125901.3623144-1-sunnanyong@huawei.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/microchip/encx24j600-regmap.c |   10 ++++++++--
+ drivers/net/ethernet/microchip/encx24j600.c        |    5 ++++-
+ drivers/net/ethernet/microchip/encx24j600_hw.h     |    4 ++--
+ 3 files changed, 14 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/ethernet/microchip/encx24j600-regmap.c
++++ b/drivers/net/ethernet/microchip/encx24j600-regmap.c
+@@ -500,13 +500,19 @@ static struct regmap_bus phymap_encx24j6
+       .reg_read = regmap_encx24j600_phy_reg_read,
+ };
+-void devm_regmap_init_encx24j600(struct device *dev,
+-                               struct encx24j600_context *ctx)
++int devm_regmap_init_encx24j600(struct device *dev,
++                              struct encx24j600_context *ctx)
+ {
+       mutex_init(&ctx->mutex);
+       regcfg.lock_arg = ctx;
+       ctx->regmap = devm_regmap_init(dev, &regmap_encx24j600, ctx, &regcfg);
++      if (IS_ERR(ctx->regmap))
++              return PTR_ERR(ctx->regmap);
+       ctx->phymap = devm_regmap_init(dev, &phymap_encx24j600, ctx, &phycfg);
++      if (IS_ERR(ctx->phymap))
++              return PTR_ERR(ctx->phymap);
++
++      return 0;
+ }
+ EXPORT_SYMBOL_GPL(devm_regmap_init_encx24j600);
+--- a/drivers/net/ethernet/microchip/encx24j600.c
++++ b/drivers/net/ethernet/microchip/encx24j600.c
+@@ -1026,10 +1026,13 @@ static int encx24j600_spi_probe(struct s
+       priv->speed = SPEED_100;
+       priv->ctx.spi = spi;
+-      devm_regmap_init_encx24j600(&spi->dev, &priv->ctx);
+       ndev->irq = spi->irq;
+       ndev->netdev_ops = &encx24j600_netdev_ops;
++      ret = devm_regmap_init_encx24j600(&spi->dev, &priv->ctx);
++      if (ret)
++              goto out_free;
++
+       mutex_init(&priv->lock);
+       /* Reset device and check if it is connected */
+--- a/drivers/net/ethernet/microchip/encx24j600_hw.h
++++ b/drivers/net/ethernet/microchip/encx24j600_hw.h
+@@ -14,8 +14,8 @@ struct encx24j600_context {
+       int bank;
+ };
+-void devm_regmap_init_encx24j600(struct device *dev,
+-                               struct encx24j600_context *ctx);
++int devm_regmap_init_encx24j600(struct device *dev,
++                              struct encx24j600_context *ctx);
+ /* Single-byte instructions */
+ #define BANK_SELECT(bank) (0xC0 | ((bank & (BANK_MASK >> BANK_SHIFT)) << 1))
diff --git a/queue-4.4/net-korina-select-crc32.patch b/queue-4.4/net-korina-select-crc32.patch
new file mode 100644 (file)
index 0000000..943c463
--- /dev/null
@@ -0,0 +1,36 @@
+From 427f974d9727ca681085ddcd0530c97ab5811ae0 Mon Sep 17 00:00:00 2001
+From: Vegard Nossum <vegard.nossum@oracle.com>
+Date: Tue, 12 Oct 2021 17:25:09 +0200
+Subject: net: korina: select CRC32
+
+From: Vegard Nossum <vegard.nossum@oracle.com>
+
+commit 427f974d9727ca681085ddcd0530c97ab5811ae0 upstream.
+
+Fix the following build/link error by adding a dependency on the CRC32
+routines:
+
+  ld: drivers/net/ethernet/korina.o: in function `korina_multicast_list':
+  korina.c:(.text+0x1af): undefined reference to `crc32_le'
+
+Fixes: ef11291bcd5f9 ("Add support the Korina (IDT RC32434) Ethernet MAC")
+Cc: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
+Acked-by: Florian fainelli <f.fainelli@gmail.com>
+Link: https://lore.kernel.org/r/20211012152509.21771-1-vegard.nossum@oracle.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/Kconfig |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/ethernet/Kconfig
++++ b/drivers/net/ethernet/Kconfig
+@@ -95,6 +95,7 @@ config JME
+ config KORINA
+       tristate "Korina (IDT RC32434) Ethernet support"
+       depends on MIKROTIK_RB532
++      select CRC32
+       ---help---
+         If you have a Mikrotik RouterBoard 500 or IDT RC32434
+         based system say Y. Otherwise say N.
index 0c50e775e3004fd861ee3f31ea018ecb2f1d91ef..b5c8efd3558216c3042c64b72ed04ebc19e629c6 100644 (file)
@@ -10,3 +10,7 @@ nvmem-fix-shift-out-of-bound-ubsan-with-byte-size-cells.patch
 iio-adc128s052-fix-the-error-handling-path-of-adc128_probe.patch
 iio-ssp_sensors-add-more-range-checking-in-ssp_parse_dataframe.patch
 iio-ssp_sensors-fix-error-code-in-ssp_print_mcu_debug.patch
+net-arc-select-crc32.patch
+net-korina-select-crc32.patch
+net-encx24j600-check-error-in-devm_regmap_init_encx24j600.patch
+ethernet-s2io-fix-setting-mac-address-during-resume.patch