]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jun 2022 09:51:30 +0000 (11:51 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jun 2022 09:51:30 +0000 (11:51 +0200)
added patches:
iio-adc-adi-axi-adc-fix-refcount-leak-in-adi_axi_adc_attach_client.patch
iio-adc-axp288-override-ts-pin-bias-current-for-some-models.patch
iio-adc-rzg2l_adc-add-missing-fwnode_handle_put-in-rzg2l_adc_parse_properties.patch
iio-adc-ti-ads131e08-add-missing-fwnode_handle_put-in-ads131e08_alloc_channels.patch
parisc-enable-arch_has_strict_module_rwx.patch
parisc-stifb-fix-fb_is_primary_device-only-available-with-config_fb_sti.patch
powerpc-enable-execve-syscall-exit-tracepoint.patch
powerpc-microwatt-wire-up-rng-during-setup_arch.patch
powerpc-powernv-wire-up-rng-during-setup_arch.patch
powerpc-rtas-allow-ibm-platform-dump-rtas-call-with-null-buffer-address.patch
xtensa-fix-refcount-leak-bug-in-time.c.patch
xtensa-xtfpga-fix-refcount-leak-bug-in-setup.patch

13 files changed:
queue-5.15/iio-adc-adi-axi-adc-fix-refcount-leak-in-adi_axi_adc_attach_client.patch [new file with mode: 0644]
queue-5.15/iio-adc-axp288-override-ts-pin-bias-current-for-some-models.patch [new file with mode: 0644]
queue-5.15/iio-adc-rzg2l_adc-add-missing-fwnode_handle_put-in-rzg2l_adc_parse_properties.patch [new file with mode: 0644]
queue-5.15/iio-adc-ti-ads131e08-add-missing-fwnode_handle_put-in-ads131e08_alloc_channels.patch [new file with mode: 0644]
queue-5.15/parisc-enable-arch_has_strict_module_rwx.patch [new file with mode: 0644]
queue-5.15/parisc-stifb-fix-fb_is_primary_device-only-available-with-config_fb_sti.patch [new file with mode: 0644]
queue-5.15/powerpc-enable-execve-syscall-exit-tracepoint.patch [new file with mode: 0644]
queue-5.15/powerpc-microwatt-wire-up-rng-during-setup_arch.patch [new file with mode: 0644]
queue-5.15/powerpc-powernv-wire-up-rng-during-setup_arch.patch [new file with mode: 0644]
queue-5.15/powerpc-rtas-allow-ibm-platform-dump-rtas-call-with-null-buffer-address.patch [new file with mode: 0644]
queue-5.15/series
queue-5.15/xtensa-fix-refcount-leak-bug-in-time.c.patch [new file with mode: 0644]
queue-5.15/xtensa-xtfpga-fix-refcount-leak-bug-in-setup.patch [new file with mode: 0644]

diff --git a/queue-5.15/iio-adc-adi-axi-adc-fix-refcount-leak-in-adi_axi_adc_attach_client.patch b/queue-5.15/iio-adc-adi-axi-adc-fix-refcount-leak-in-adi_axi_adc_attach_client.patch
new file mode 100644 (file)
index 0000000..2e6f2af
--- /dev/null
@@ -0,0 +1,45 @@
+From ada7b0c0dedafd7d059115adf49e48acba3153a8 Mon Sep 17 00:00:00 2001
+From: Miaoqian Lin <linmq006@gmail.com>
+Date: Tue, 24 May 2022 11:45:17 +0400
+Subject: iio: adc: adi-axi-adc: Fix refcount leak in adi_axi_adc_attach_client
+
+From: Miaoqian Lin <linmq006@gmail.com>
+
+commit ada7b0c0dedafd7d059115adf49e48acba3153a8 upstream.
+
+of_parse_phandle() returns a node pointer with refcount
+incremented, we should use of_node_put() on it when not need anymore.
+Add missing of_node_put() to avoid refcount leak.
+
+Fixes: ef04070692a2 ("iio: adc: adi-axi-adc: add support for AXI ADC IP core")
+Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
+Link: https://lore.kernel.org/r/20220524074517.45268-1-linmq006@gmail.com
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/adc/adi-axi-adc.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/iio/adc/adi-axi-adc.c
++++ b/drivers/iio/adc/adi-axi-adc.c
+@@ -322,16 +322,19 @@ static struct adi_axi_adc_client *adi_ax
+               if (!try_module_get(cl->dev->driver->owner)) {
+                       mutex_unlock(&registered_clients_lock);
++                      of_node_put(cln);
+                       return ERR_PTR(-ENODEV);
+               }
+               get_device(cl->dev);
+               cl->info = info;
+               mutex_unlock(&registered_clients_lock);
++              of_node_put(cln);
+               return cl;
+       }
+       mutex_unlock(&registered_clients_lock);
++      of_node_put(cln);
+       return ERR_PTR(-EPROBE_DEFER);
+ }
diff --git a/queue-5.15/iio-adc-axp288-override-ts-pin-bias-current-for-some-models.patch b/queue-5.15/iio-adc-axp288-override-ts-pin-bias-current-for-some-models.patch
new file mode 100644 (file)
index 0000000..a559cda
--- /dev/null
@@ -0,0 +1,51 @@
+From 048058399f19d43cf21de9f5d36cd8144337d004 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Fri, 6 May 2022 11:50:40 +0200
+Subject: iio: adc: axp288: Override TS pin bias current for some models
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 048058399f19d43cf21de9f5d36cd8144337d004 upstream.
+
+Since commit 9bcf15f75cac ("iio: adc: axp288: Fix TS-pin handling") we
+preserve the bias current set by the firmware at boot. This fixes issues
+we were seeing on various models.
+
+Some models like the Nuvision Solo 10 Draw tablet actually need the
+old hardcoded 80ųA bias current for battery temperature monitoring
+to work properly.
+
+Add a quirk entry for the Nuvision Solo 10 Draw to the DMI quirk table
+to restore setting the bias current to 80ųA on this model.
+
+Fixes: 9bcf15f75cac ("iio: adc: axp288: Fix TS-pin handling")
+BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215882
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Link: https://lore.kernel.org/r/20220506095040.21008-1-hdegoede@redhat.com
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/adc/axp288_adc.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/iio/adc/axp288_adc.c
++++ b/drivers/iio/adc/axp288_adc.c
+@@ -196,6 +196,14 @@ static const struct dmi_system_id axp288
+               },
+               .driver_data = (void *)(uintptr_t)AXP288_ADC_TS_BIAS_80UA,
+       },
++      {
++              /* Nuvision Solo 10 Draw */
++              .matches = {
++                DMI_MATCH(DMI_SYS_VENDOR, "TMAX"),
++                DMI_MATCH(DMI_PRODUCT_NAME, "TM101W610L"),
++              },
++              .driver_data = (void *)(uintptr_t)AXP288_ADC_TS_BIAS_80UA,
++      },
+       {}
+ };
diff --git a/queue-5.15/iio-adc-rzg2l_adc-add-missing-fwnode_handle_put-in-rzg2l_adc_parse_properties.patch b/queue-5.15/iio-adc-rzg2l_adc-add-missing-fwnode_handle_put-in-rzg2l_adc_parse_properties.patch
new file mode 100644 (file)
index 0000000..90ebac8
--- /dev/null
@@ -0,0 +1,46 @@
+From d836715f588ea15f905f607c27bc693587058db4 Mon Sep 17 00:00:00 2001
+From: Jialin Zhang <zhangjialin11@huawei.com>
+Date: Tue, 17 May 2022 11:35:26 +0800
+Subject: iio: adc: rzg2l_adc: add missing fwnode_handle_put() in rzg2l_adc_parse_properties()
+
+From: Jialin Zhang <zhangjialin11@huawei.com>
+
+commit d836715f588ea15f905f607c27bc693587058db4 upstream.
+
+fwnode_handle_put() should be used when terminating
+device_for_each_child_node() iteration with break or return to prevent
+stale device node references from being left behind.
+
+Fixes: d484c21bacfa ("iio: adc: Add driver for Renesas RZ/G2L A/D converter")
+Reported-by: Hulk Robot <hulkci@huawei.com>
+Signed-off-by: Jialin Zhang <zhangjialin11@huawei.com>
+Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
+Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
+Link: https://lore.kernel.org/r/20220517033526.2035735-1-zhangjialin11@huawei.com
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/adc/rzg2l_adc.c |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/drivers/iio/adc/rzg2l_adc.c
++++ b/drivers/iio/adc/rzg2l_adc.c
+@@ -334,11 +334,15 @@ static int rzg2l_adc_parse_properties(st
+       i = 0;
+       device_for_each_child_node(&pdev->dev, fwnode) {
+               ret = fwnode_property_read_u32(fwnode, "reg", &channel);
+-              if (ret)
++              if (ret) {
++                      fwnode_handle_put(fwnode);
+                       return ret;
++              }
+-              if (channel >= RZG2L_ADC_MAX_CHANNELS)
++              if (channel >= RZG2L_ADC_MAX_CHANNELS) {
++                      fwnode_handle_put(fwnode);
+                       return -EINVAL;
++              }
+               chan_array[i].type = IIO_VOLTAGE;
+               chan_array[i].indexed = 1;
diff --git a/queue-5.15/iio-adc-ti-ads131e08-add-missing-fwnode_handle_put-in-ads131e08_alloc_channels.patch b/queue-5.15/iio-adc-ti-ads131e08-add-missing-fwnode_handle_put-in-ads131e08_alloc_channels.patch
new file mode 100644 (file)
index 0000000..52a998f
--- /dev/null
@@ -0,0 +1,64 @@
+From 47dcf770abc793f347a65a24c24d550c936f08b0 Mon Sep 17 00:00:00 2001
+From: Jialin Zhang <zhangjialin11@huawei.com>
+Date: Tue, 17 May 2022 11:30:20 +0800
+Subject: iio: adc: ti-ads131e08: add missing fwnode_handle_put() in ads131e08_alloc_channels()
+
+From: Jialin Zhang <zhangjialin11@huawei.com>
+
+commit 47dcf770abc793f347a65a24c24d550c936f08b0 upstream.
+
+fwnode_handle_put() should be used when terminating
+device_for_each_child_node() iteration with break or return to prevent
+stale device node references from being left behind.
+
+Fixes: d935eddd2799 ("iio: adc: Add driver for Texas Instruments ADS131E0x ADC family")
+Reported-by: Hulk Robot <hulkci@huawei.com>
+Signed-off-by: Jialin Zhang <zhangjialin11@huawei.com>
+Link: https://lore.kernel.org/r/20220517033020.2033324-1-zhangjialin11@huawei.com
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/adc/ti-ads131e08.c |   10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+--- a/drivers/iio/adc/ti-ads131e08.c
++++ b/drivers/iio/adc/ti-ads131e08.c
+@@ -739,7 +739,7 @@ static int ads131e08_alloc_channels(stru
+       device_for_each_child_node(dev, node) {
+               ret = fwnode_property_read_u32(node, "reg", &channel);
+               if (ret)
+-                      return ret;
++                      goto err_child_out;
+               ret = fwnode_property_read_u32(node, "ti,gain", &tmp);
+               if (ret) {
+@@ -747,7 +747,7 @@ static int ads131e08_alloc_channels(stru
+               } else {
+                       ret = ads131e08_pga_gain_to_field_value(st, tmp);
+                       if (ret < 0)
+-                              return ret;
++                              goto err_child_out;
+                       channel_config[i].pga_gain = tmp;
+               }
+@@ -758,7 +758,7 @@ static int ads131e08_alloc_channels(stru
+               } else {
+                       ret = ads131e08_validate_channel_mux(st, tmp);
+                       if (ret)
+-                              return ret;
++                              goto err_child_out;
+                       channel_config[i].mux = tmp;
+               }
+@@ -784,6 +784,10 @@ static int ads131e08_alloc_channels(stru
+       st->channel_config = channel_config;
+       return 0;
++
++err_child_out:
++      fwnode_handle_put(node);
++      return ret;
+ }
+ static void ads131e08_regulator_disable(void *data)
diff --git a/queue-5.15/parisc-enable-arch_has_strict_module_rwx.patch b/queue-5.15/parisc-enable-arch_has_strict_module_rwx.patch
new file mode 100644 (file)
index 0000000..c5642c9
--- /dev/null
@@ -0,0 +1,32 @@
+From 0a1355db36718178becd2bfe728a023933d73123 Mon Sep 17 00:00:00 2001
+From: Helge Deller <deller@gmx.de>
+Date: Sun, 26 Jun 2022 11:50:43 +0200
+Subject: parisc: Enable ARCH_HAS_STRICT_MODULE_RWX
+
+From: Helge Deller <deller@gmx.de>
+
+commit 0a1355db36718178becd2bfe728a023933d73123 upstream.
+
+Fix a boot crash on a c8000 machine as reported by Dave.  Basically it changes
+patch_map() to return an alias mapping to the to-be-patched code in order to
+prevent writing to write-protected memory.
+
+Signed-off-by: Helge Deller <deller@gmx.de>
+Suggested-by: John David Anglin <dave.anglin@bell.net>
+Cc: stable@vger.kernel.org   # v5.2+
+Link: https://lore.kernel.org/all/e8ec39e8-25f8-e6b4-b7ed-4cb23efc756e@bell.net/
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/parisc/Kconfig |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/parisc/Kconfig
++++ b/arch/parisc/Kconfig
+@@ -9,6 +9,7 @@ config PARISC
+       select ARCH_WANT_FRAME_POINTERS
+       select ARCH_HAS_ELF_RANDOMIZE
+       select ARCH_HAS_STRICT_KERNEL_RWX
++      select ARCH_HAS_STRICT_MODULE_RWX
+       select ARCH_HAS_UBSAN_SANITIZE_ALL
+       select ARCH_NO_SG_CHAIN
+       select ARCH_SUPPORTS_HUGETLBFS if PA20
diff --git a/queue-5.15/parisc-stifb-fix-fb_is_primary_device-only-available-with-config_fb_sti.patch b/queue-5.15/parisc-stifb-fix-fb_is_primary_device-only-available-with-config_fb_sti.patch
new file mode 100644 (file)
index 0000000..4d3333a
--- /dev/null
@@ -0,0 +1,52 @@
+From 1d0811b03eb30b2f0793acaa96c6ce90b8b9c87a Mon Sep 17 00:00:00 2001
+From: Helge Deller <deller@gmx.de>
+Date: Tue, 7 Jun 2022 12:57:58 +0200
+Subject: parisc/stifb: Fix fb_is_primary_device() only available with CONFIG_FB_STI
+
+From: Helge Deller <deller@gmx.de>
+
+commit 1d0811b03eb30b2f0793acaa96c6ce90b8b9c87a upstream.
+
+Fix this build error noticed by the kernel test robot:
+
+drivers/video/console/sticore.c:1132:5: error: redefinition of 'fb_is_primary_device'
+ arch/parisc/include/asm/fb.h:18:19: note: previous definition of 'fb_is_primary_device'
+
+Signed-off-by: Helge Deller <deller@gmx.de>
+Reported-by: kernel test robot <lkp@intel.com>
+Cc: stable@vger.kernel.org   # v5.10+
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/parisc/include/asm/fb.h    |    2 +-
+ drivers/video/console/sticore.c |    2 ++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+--- a/arch/parisc/include/asm/fb.h
++++ b/arch/parisc/include/asm/fb.h
+@@ -12,7 +12,7 @@ static inline void fb_pgprotect(struct f
+       pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE;
+ }
+-#if defined(CONFIG_STI_CONSOLE) || defined(CONFIG_FB_STI)
++#if defined(CONFIG_FB_STI)
+ int fb_is_primary_device(struct fb_info *info);
+ #else
+ static inline int fb_is_primary_device(struct fb_info *info)
+--- a/drivers/video/console/sticore.c
++++ b/drivers/video/console/sticore.c
+@@ -1127,6 +1127,7 @@ int sti_call(const struct sti_struct *st
+       return ret;
+ }
++#if defined(CONFIG_FB_STI)
+ /* check if given fb_info is the primary device */
+ int fb_is_primary_device(struct fb_info *info)
+ {
+@@ -1142,6 +1143,7 @@ int fb_is_primary_device(struct fb_info
+       return (sti->info == info);
+ }
+ EXPORT_SYMBOL(fb_is_primary_device);
++#endif
+ MODULE_AUTHOR("Philipp Rumpf, Helge Deller, Thomas Bogendoerfer");
+ MODULE_DESCRIPTION("Core STI driver for HP's NGLE series graphics cards in HP PARISC machines");
diff --git a/queue-5.15/powerpc-enable-execve-syscall-exit-tracepoint.patch b/queue-5.15/powerpc-enable-execve-syscall-exit-tracepoint.patch
new file mode 100644 (file)
index 0000000..e8ea0d2
--- /dev/null
@@ -0,0 +1,58 @@
+From ec6d0dde71d760aa60316f8d1c9a1b0d99213529 Mon Sep 17 00:00:00 2001
+From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
+Date: Thu, 9 Jun 2022 16:03:28 +0530
+Subject: powerpc: Enable execve syscall exit tracepoint
+
+From: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
+
+commit ec6d0dde71d760aa60316f8d1c9a1b0d99213529 upstream.
+
+On execve[at], we are zero'ing out most of the thread register state
+including gpr[0], which contains the syscall number. Due to this, we
+fail to trigger the syscall exit tracepoint properly. Fix this by
+retaining gpr[0] in the thread register state.
+
+Before this patch:
+  # tail /sys/kernel/debug/tracing/trace
+              cat-123     [000] .....    61.449351: sys_execve(filename:
+  7fffa6b23448, argv: 7fffa6b233e0, envp: 7fffa6b233f8)
+              cat-124     [000] .....    62.428481: sys_execve(filename:
+  7fffa6b23448, argv: 7fffa6b233e0, envp: 7fffa6b233f8)
+             echo-125     [000] .....    65.813702: sys_execve(filename:
+  7fffa6b23378, argv: 7fffa6b233a0, envp: 7fffa6b233b0)
+             echo-125     [000] .....    65.822214: sys_execveat(fd: 0,
+  filename: 1009ac48, argv: 7ffff65d0c98, envp: 7ffff65d0ca8, flags: 0)
+
+After this patch:
+  # tail /sys/kernel/debug/tracing/trace
+              cat-127     [000] .....   100.416262: sys_execve(filename:
+  7fffa41b3448, argv: 7fffa41b33e0, envp: 7fffa41b33f8)
+              cat-127     [000] .....   100.418203: sys_execve -> 0x0
+             echo-128     [000] .....   103.873968: sys_execve(filename:
+  7fffa41b3378, argv: 7fffa41b33a0, envp: 7fffa41b33b0)
+             echo-128     [000] .....   103.875102: sys_execve -> 0x0
+             echo-128     [000] .....   103.882097: sys_execveat(fd: 0,
+  filename: 1009ac48, argv: 7fffd10d2148, envp: 7fffd10d2158, flags: 0)
+             echo-128     [000] .....   103.883225: sys_execveat -> 0x0
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
+Tested-by: Sumit Dubey2 <Sumit.Dubey2@ibm.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20220609103328.41306-1-naveen.n.rao@linux.vnet.ibm.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/kernel/process.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/powerpc/kernel/process.c
++++ b/arch/powerpc/kernel/process.c
+@@ -1818,7 +1818,7 @@ void start_thread(struct pt_regs *regs,
+               tm_reclaim_current(0);
+ #endif
+-      memset(regs->gpr, 0, sizeof(regs->gpr));
++      memset(&regs->gpr[1], 0, sizeof(regs->gpr) - sizeof(regs->gpr[0]));
+       regs->ctr = 0;
+       regs->link = 0;
+       regs->xer = 0;
diff --git a/queue-5.15/powerpc-microwatt-wire-up-rng-during-setup_arch.patch b/queue-5.15/powerpc-microwatt-wire-up-rng-during-setup_arch.patch
new file mode 100644 (file)
index 0000000..5ec18fe
--- /dev/null
@@ -0,0 +1,111 @@
+From 20a9689b3607456d92c6fb764501f6a95950b098 Mon Sep 17 00:00:00 2001
+From: "Jason A. Donenfeld" <Jason@zx2c4.com>
+Date: Sat, 11 Jun 2022 17:10:13 +0200
+Subject: powerpc/microwatt: wire up rng during setup_arch()
+
+From: Jason A. Donenfeld <Jason@zx2c4.com>
+
+commit 20a9689b3607456d92c6fb764501f6a95950b098 upstream.
+
+The platform's RNG must be available before random_init() in order to be
+useful for initial seeding, which in turn means that it needs to be
+called from setup_arch(), rather than from an init call. Fortunately,
+each platform already has a setup_arch function pointer, which means
+it's easy to wire this up. This commit also removes some noisy log
+messages that don't add much.
+
+Fixes: c25769fddaec ("powerpc/microwatt: Add support for hardware random number generator")
+Cc: stable@vger.kernel.org # v5.14+
+Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
+Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20220611151015.548325-2-Jason@zx2c4.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/platforms/microwatt/microwatt.h |  7 +++++++
+ arch/powerpc/platforms/microwatt/rng.c       | 10 +++-------
+ arch/powerpc/platforms/microwatt/setup.c     |  8 ++++++++
+ 3 files changed, 18 insertions(+), 7 deletions(-)
+ create mode 100644 arch/powerpc/platforms/microwatt/microwatt.h
+
+diff --git a/arch/powerpc/platforms/microwatt/microwatt.h b/arch/powerpc/platforms/microwatt/microwatt.h
+new file mode 100644
+index 000000000000..335417e95e66
+--- /dev/null
++++ b/arch/powerpc/platforms/microwatt/microwatt.h
+@@ -0,0 +1,7 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#ifndef _MICROWATT_H
++#define _MICROWATT_H
++
++void microwatt_rng_init(void);
++
++#endif /* _MICROWATT_H */
+diff --git a/arch/powerpc/platforms/microwatt/rng.c b/arch/powerpc/platforms/microwatt/rng.c
+index 7bc4d1cbfaf0..8ece87d005c8 100644
+--- a/arch/powerpc/platforms/microwatt/rng.c
++++ b/arch/powerpc/platforms/microwatt/rng.c
+@@ -11,6 +11,7 @@
+ #include <asm/archrandom.h>
+ #include <asm/cputable.h>
+ #include <asm/machdep.h>
++#include "microwatt.h"
+ #define DARN_ERR 0xFFFFFFFFFFFFFFFFul
+@@ -29,7 +30,7 @@ static int microwatt_get_random_darn(unsigned long *v)
+       return 1;
+ }
+-static __init int rng_init(void)
++void __init microwatt_rng_init(void)
+ {
+       unsigned long val;
+       int i;
+@@ -37,12 +38,7 @@ static __init int rng_init(void)
+       for (i = 0; i < 10; i++) {
+               if (microwatt_get_random_darn(&val)) {
+                       ppc_md.get_random_seed = microwatt_get_random_darn;
+-                      return 0;
++                      return;
+               }
+       }
+-
+-      pr_warn("Unable to use DARN for get_random_seed()\n");
+-
+-      return -EIO;
+ }
+-machine_subsys_initcall(, rng_init);
+diff --git a/arch/powerpc/platforms/microwatt/setup.c b/arch/powerpc/platforms/microwatt/setup.c
+index 0b02603bdb74..6b32539395a4 100644
+--- a/arch/powerpc/platforms/microwatt/setup.c
++++ b/arch/powerpc/platforms/microwatt/setup.c
+@@ -16,6 +16,8 @@
+ #include <asm/xics.h>
+ #include <asm/udbg.h>
++#include "microwatt.h"
++
+ static void __init microwatt_init_IRQ(void)
+ {
+       xics_init();
+@@ -32,10 +34,16 @@ static int __init microwatt_populate(void)
+ }
+ machine_arch_initcall(microwatt, microwatt_populate);
++static void __init microwatt_setup_arch(void)
++{
++      microwatt_rng_init();
++}
++
+ define_machine(microwatt) {
+       .name                   = "microwatt",
+       .probe                  = microwatt_probe,
+       .init_IRQ               = microwatt_init_IRQ,
++      .setup_arch             = microwatt_setup_arch,
+       .progress               = udbg_progress,
+       .calibrate_decr         = generic_calibrate_decr,
+ };
+-- 
+2.36.1
+
diff --git a/queue-5.15/powerpc-powernv-wire-up-rng-during-setup_arch.patch b/queue-5.15/powerpc-powernv-wire-up-rng-during-setup_arch.patch
new file mode 100644 (file)
index 0000000..7dd03fd
--- /dev/null
@@ -0,0 +1,148 @@
+From f3eac426657d985b97c92fa5f7ae1d43f04721f3 Mon Sep 17 00:00:00 2001
+From: "Jason A. Donenfeld" <Jason@zx2c4.com>
+Date: Tue, 21 Jun 2022 16:08:49 +0200
+Subject: powerpc/powernv: wire up rng during setup_arch
+
+From: Jason A. Donenfeld <Jason@zx2c4.com>
+
+commit f3eac426657d985b97c92fa5f7ae1d43f04721f3 upstream.
+
+The platform's RNG must be available before random_init() in order to be
+useful for initial seeding, which in turn means that it needs to be
+called from setup_arch(), rather than from an init call.
+
+Complicating things, however, is that POWER8 systems need some per-cpu
+state and kmalloc, which isn't available at this stage. So we split
+things up into an early phase and a later opportunistic phase. This
+commit also removes some noisy log messages that don't add much.
+
+Fixes: a4da0d50b2a0 ("powerpc: Implement arch_get_random_long/int() for powernv")
+Cc: stable@vger.kernel.org # v3.13+
+Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
+Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
+[mpe: Add of_node_put(), use pnv naming, minor change log editing]
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20220621140849.127227-1-Jason@zx2c4.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/platforms/powernv/powernv.h |    2 +
+ arch/powerpc/platforms/powernv/rng.c     |   52 +++++++++++++++++++++----------
+ arch/powerpc/platforms/powernv/setup.c   |    2 +
+ 3 files changed, 40 insertions(+), 16 deletions(-)
+
+--- a/arch/powerpc/platforms/powernv/powernv.h
++++ b/arch/powerpc/platforms/powernv/powernv.h
+@@ -42,4 +42,6 @@ ssize_t memcons_copy(struct memcons *mc,
+ u32 memcons_get_size(struct memcons *mc);
+ struct memcons *memcons_init(struct device_node *node, const char *mc_prop_name);
++void pnv_rng_init(void);
++
+ #endif /* _POWERNV_H */
+--- a/arch/powerpc/platforms/powernv/rng.c
++++ b/arch/powerpc/platforms/powernv/rng.c
+@@ -17,6 +17,7 @@
+ #include <asm/prom.h>
+ #include <asm/machdep.h>
+ #include <asm/smp.h>
++#include "powernv.h"
+ #define DARN_ERR 0xFFFFFFFFFFFFFFFFul
+@@ -28,7 +29,6 @@ struct powernv_rng {
+ static DEFINE_PER_CPU(struct powernv_rng *, powernv_rng);
+-
+ int powernv_hwrng_present(void)
+ {
+       struct powernv_rng *rng;
+@@ -98,9 +98,6 @@ static int initialise_darn(void)
+                       return 0;
+               }
+       }
+-
+-      pr_warn("Unable to use DARN for get_random_seed()\n");
+-
+       return -EIO;
+ }
+@@ -163,32 +160,55 @@ static __init int rng_create(struct devi
+       rng_init_per_cpu(rng, dn);
+-      pr_info_once("Registering arch random hook.\n");
+-
+       ppc_md.get_random_seed = powernv_get_random_long;
+       return 0;
+ }
+-static __init int rng_init(void)
++static int __init pnv_get_random_long_early(unsigned long *v)
+ {
+       struct device_node *dn;
+-      int rc;
++
++      if (!slab_is_available())
++              return 0;
++
++      if (cmpxchg(&ppc_md.get_random_seed, pnv_get_random_long_early,
++                  NULL) != pnv_get_random_long_early)
++              return 0;
+       for_each_compatible_node(dn, NULL, "ibm,power-rng") {
+-              rc = rng_create(dn);
+-              if (rc) {
+-                      pr_err("Failed creating rng for %pOF (%d).\n",
+-                              dn, rc);
++              if (rng_create(dn))
+                       continue;
+-              }
+-
+               /* Create devices for hwrng driver */
+               of_platform_device_create(dn, NULL, NULL);
+       }
+-      initialise_darn();
++      if (!ppc_md.get_random_seed)
++              return 0;
++      return ppc_md.get_random_seed(v);
++}
++
++void __init pnv_rng_init(void)
++{
++      struct device_node *dn;
++      /* Prefer darn over the rest. */
++      if (!initialise_darn())
++              return;
++
++      dn = of_find_compatible_node(NULL, NULL, "ibm,power-rng");
++      if (dn)
++              ppc_md.get_random_seed = pnv_get_random_long_early;
++
++      of_node_put(dn);
++}
++
++static int __init pnv_rng_late_init(void)
++{
++      unsigned long v;
++      /* In case it wasn't called during init for some other reason. */
++      if (ppc_md.get_random_seed == pnv_get_random_long_early)
++              pnv_get_random_long_early(&v);
+       return 0;
+ }
+-machine_subsys_initcall(powernv, rng_init);
++machine_subsys_initcall(powernv, pnv_rng_late_init);
+--- a/arch/powerpc/platforms/powernv/setup.c
++++ b/arch/powerpc/platforms/powernv/setup.c
+@@ -190,6 +190,8 @@ static void __init pnv_setup_arch(void)
+       pnv_check_guarded_cores();
+       /* XXX PMCS */
++
++      pnv_rng_init();
+ }
+ static void __init pnv_init(void)
diff --git a/queue-5.15/powerpc-rtas-allow-ibm-platform-dump-rtas-call-with-null-buffer-address.patch b/queue-5.15/powerpc-rtas-allow-ibm-platform-dump-rtas-call-with-null-buffer-address.patch
new file mode 100644 (file)
index 0000000..ea25c69
--- /dev/null
@@ -0,0 +1,60 @@
+From 7bc08056a6dabc3a1442216daf527edf61ac24b6 Mon Sep 17 00:00:00 2001
+From: Andrew Donnellan <ajd@linux.ibm.com>
+Date: Tue, 14 Jun 2022 23:49:52 +1000
+Subject: powerpc/rtas: Allow ibm,platform-dump RTAS call with null buffer address
+
+From: Andrew Donnellan <ajd@linux.ibm.com>
+
+commit 7bc08056a6dabc3a1442216daf527edf61ac24b6 upstream.
+
+Add a special case to block_rtas_call() to allow the ibm,platform-dump RTAS
+call through the RTAS filter if the buffer address is 0.
+
+According to PAPR, ibm,platform-dump is called with a null buffer address
+to notify the platform firmware that processing of a particular dump is
+finished.
+
+Without this, on a pseries machine with CONFIG_PPC_RTAS_FILTER enabled, an
+application such as rtas_errd that is attempting to retrieve a dump will
+encounter an error at the end of the retrieval process.
+
+Fixes: bd59380c5ba4 ("powerpc/rtas: Restrict RTAS requests from userspace")
+Cc: stable@vger.kernel.org
+Reported-by: Sathvika Vasireddy <sathvika@linux.ibm.com>
+Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com>
+Reviewed-by: Tyrel Datwyler <tyreld@linux.ibm.com>
+Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20220614134952.156010-1-ajd@linux.ibm.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/kernel/rtas.c |   11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+--- a/arch/powerpc/kernel/rtas.c
++++ b/arch/powerpc/kernel/rtas.c
+@@ -983,7 +983,7 @@ static struct rtas_filter rtas_filters[]
+       { "get-time-of-day", -1, -1, -1, -1, -1 },
+       { "ibm,get-vpd", -1, 0, -1, 1, 2 },
+       { "ibm,lpar-perftools", -1, 2, 3, -1, -1 },
+-      { "ibm,platform-dump", -1, 4, 5, -1, -1 },
++      { "ibm,platform-dump", -1, 4, 5, -1, -1 },              /* Special cased */
+       { "ibm,read-slot-reset-state", -1, -1, -1, -1, -1 },
+       { "ibm,scan-log-dump", -1, 0, 1, -1, -1 },
+       { "ibm,set-dynamic-indicator", -1, 2, -1, -1, -1 },
+@@ -1032,6 +1032,15 @@ static bool block_rtas_call(int token, i
+                               size = 1;
+                       end = base + size - 1;
++
++                      /*
++                       * Special case for ibm,platform-dump - NULL buffer
++                       * address is used to indicate end of dump processing
++                       */
++                      if (!strcmp(f->name, "ibm,platform-dump") &&
++                          base == 0)
++                              return false;
++
+                       if (!in_rmo_buf(base, end))
+                               goto err;
+               }
index 23d93ca0decd815370633dcb308d02d680dbf84d..aafc8c1092d54d67e5ba5038d7c6d96e3465033a 100644 (file)
@@ -105,3 +105,15 @@ iio-imu-inv_icm42600-fix-broken-icm42600-chip-id-0-value.patch
 iio-afe-rescale-fix-boolean-logic-bug.patch
 iio-adc-stm32-fix-adcs-iteration-in-irq-handler.patch
 iio-adc-stm32-fix-irqs-on-stm32f4-by-removing-custom-spurious-irqs-message.patch
+iio-adc-axp288-override-ts-pin-bias-current-for-some-models.patch
+iio-adc-rzg2l_adc-add-missing-fwnode_handle_put-in-rzg2l_adc_parse_properties.patch
+iio-adc-adi-axi-adc-fix-refcount-leak-in-adi_axi_adc_attach_client.patch
+iio-adc-ti-ads131e08-add-missing-fwnode_handle_put-in-ads131e08_alloc_channels.patch
+xtensa-xtfpga-fix-refcount-leak-bug-in-setup.patch
+xtensa-fix-refcount-leak-bug-in-time.c.patch
+parisc-stifb-fix-fb_is_primary_device-only-available-with-config_fb_sti.patch
+parisc-enable-arch_has_strict_module_rwx.patch
+powerpc-microwatt-wire-up-rng-during-setup_arch.patch
+powerpc-enable-execve-syscall-exit-tracepoint.patch
+powerpc-rtas-allow-ibm-platform-dump-rtas-call-with-null-buffer-address.patch
+powerpc-powernv-wire-up-rng-during-setup_arch.patch
diff --git a/queue-5.15/xtensa-fix-refcount-leak-bug-in-time.c.patch b/queue-5.15/xtensa-fix-refcount-leak-bug-in-time.c.patch
new file mode 100644 (file)
index 0000000..169adfc
--- /dev/null
@@ -0,0 +1,32 @@
+From a0117dc956429f2ede17b323046e1968d1849150 Mon Sep 17 00:00:00 2001
+From: Liang He <windhl@126.com>
+Date: Fri, 17 Jun 2022 20:44:32 +0800
+Subject: xtensa: Fix refcount leak bug in time.c
+
+From: Liang He <windhl@126.com>
+
+commit a0117dc956429f2ede17b323046e1968d1849150 upstream.
+
+In calibrate_ccount(), of_find_compatible_node() will return a node
+pointer with refcount incremented. We should use of_node_put() when
+it is not used anymore.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Liang He <windhl@126.com>
+Message-Id: <20220617124432.4049006-1-windhl@126.com>
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/xtensa/kernel/time.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/xtensa/kernel/time.c
++++ b/arch/xtensa/kernel/time.c
+@@ -154,6 +154,7 @@ static void __init calibrate_ccount(void
+       cpu = of_find_compatible_node(NULL, NULL, "cdns,xtensa-cpu");
+       if (cpu) {
+               clk = of_clk_get(cpu, 0);
++              of_node_put(cpu);
+               if (!IS_ERR(clk)) {
+                       ccount_freq = clk_get_rate(clk);
+                       return;
diff --git a/queue-5.15/xtensa-xtfpga-fix-refcount-leak-bug-in-setup.patch b/queue-5.15/xtensa-xtfpga-fix-refcount-leak-bug-in-setup.patch
new file mode 100644 (file)
index 0000000..06e3266
--- /dev/null
@@ -0,0 +1,32 @@
+From 173940b3ae40114d4179c251a98ee039dc9cd5b3 Mon Sep 17 00:00:00 2001
+From: Liang He <windhl@126.com>
+Date: Fri, 17 Jun 2022 19:53:23 +0800
+Subject: xtensa: xtfpga: Fix refcount leak bug in setup
+
+From: Liang He <windhl@126.com>
+
+commit 173940b3ae40114d4179c251a98ee039dc9cd5b3 upstream.
+
+In machine_setup(), of_find_compatible_node() will return a node
+pointer with refcount incremented. We should use of_node_put() when
+it is not used anymore.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Liang He <windhl@126.com>
+Message-Id: <20220617115323.4046905-1-windhl@126.com>
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/xtensa/platforms/xtfpga/setup.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/xtensa/platforms/xtfpga/setup.c
++++ b/arch/xtensa/platforms/xtfpga/setup.c
+@@ -133,6 +133,7 @@ static int __init machine_setup(void)
+       if ((eth = of_find_compatible_node(eth, NULL, "opencores,ethoc")))
+               update_local_mac(eth);
++      of_node_put(eth);
+       return 0;
+ }
+ arch_initcall(machine_setup);