+++ /dev/null
-From f8e16eebf617cd521687a5287495858a5c7853fa Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 27 Apr 2022 11:56:48 +0200
-Subject: clk: renesas: r9a06g032: Export function to set dmamux
-
-From: Miquel Raynal <miquel.raynal@bootlin.com>
-
-[ Upstream commit 885525c1e7e27ea6207d648a8db20dfbbd9e4238 ]
-
-The dmamux register is located within the system controller.
-
-Without syscon, we need an extra helper in order to give write access to
-this register to a dmamux driver.
-
-Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
-Acked-by: Stephen Boyd <sboyd@kernel.org>
-Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Link: https://lore.kernel.org/r/20220427095653.91804-5-miquel.raynal@bootlin.com
-Signed-off-by: Vinod Koul <vkoul@kernel.org>
-Stable-dep-of: f8def051bbcf ("clk: renesas: r9a06g032: Fix memory leak in error path")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/clk/renesas/r9a06g032-clocks.c | 35 ++++++++++++++++++-
- include/linux/soc/renesas/r9a06g032-sysctrl.h | 11 ++++++
- 2 files changed, 45 insertions(+), 1 deletion(-)
- create mode 100644 include/linux/soc/renesas/r9a06g032-sysctrl.h
-
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index 285f6ac25372d..65cd6ed68923e 100644
---- a/drivers/clk/renesas/r9a06g032-clocks.c
-+++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -20,9 +20,12 @@
- #include <linux/pm_clock.h>
- #include <linux/pm_domain.h>
- #include <linux/slab.h>
-+#include <linux/soc/renesas/r9a06g032-sysctrl.h>
- #include <linux/spinlock.h>
- #include <dt-bindings/clock/r9a06g032-sysctrl.h>
-
-+#define R9A06G032_SYSCTRL_DMAMUX 0xA0
-+
- struct r9a06g032_gate {
- u16 gate, reset, ready, midle,
- scon, mirack, mistat;
-@@ -315,6 +318,30 @@ struct r9a06g032_priv {
- void __iomem *reg;
- };
-
-+static struct r9a06g032_priv *sysctrl_priv;
-+
-+/* Exported helper to access the DMAMUX register */
-+int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val)
-+{
-+ unsigned long flags;
-+ u32 dmamux;
-+
-+ if (!sysctrl_priv)
-+ return -EPROBE_DEFER;
-+
-+ spin_lock_irqsave(&sysctrl_priv->lock, flags);
-+
-+ dmamux = readl(sysctrl_priv->reg + R9A06G032_SYSCTRL_DMAMUX);
-+ dmamux &= ~mask;
-+ dmamux |= val & mask;
-+ writel(dmamux, sysctrl_priv->reg + R9A06G032_SYSCTRL_DMAMUX);
-+
-+ spin_unlock_irqrestore(&sysctrl_priv->lock, flags);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(r9a06g032_sysctrl_set_dmamux);
-+
- /* register/bit pairs are encoded as an uint16_t */
- static void
- clk_rdesc_set(struct r9a06g032_priv *clocks,
-@@ -961,7 +988,13 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
- if (error)
- return error;
-
-- return r9a06g032_add_clk_domain(dev);
-+ error = r9a06g032_add_clk_domain(dev);
-+ if (error)
-+ return error;
-+
-+ sysctrl_priv = clocks;
-+
-+ return 0;
- }
-
- static const struct of_device_id r9a06g032_match[] = {
-diff --git a/include/linux/soc/renesas/r9a06g032-sysctrl.h b/include/linux/soc/renesas/r9a06g032-sysctrl.h
-new file mode 100644
-index 0000000000000..066dfb15cbddd
---- /dev/null
-+++ b/include/linux/soc/renesas/r9a06g032-sysctrl.h
-@@ -0,0 +1,11 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#ifndef __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__
-+#define __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__
-+
-+#ifdef CONFIG_CLK_R9A06G032
-+int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val);
-+#else
-+static inline int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val) { return -ENODEV; }
-+#endif
-+
-+#endif /* __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__ */
---
-2.51.0
-
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
- drivers/clk/renesas/r9a06g032-clocks.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ drivers/clk/renesas/r9a06g032-clocks.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index b3fd97615fc4c..9807fd0adb6c3 100644
--- a/drivers/clk/renesas/r9a06g032-clocks.c
+++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -969,9 +969,9 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
+@@ -917,9 +917,10 @@ static int __init r9a06g032_clocks_probe
if (IS_ERR(mclk))
return PTR_ERR(mclk);
+ clocks->reg = devm_of_iomap(dev, np, 0, NULL);
+ if (IS_ERR(clocks->reg))
+ return PTR_ERR(clocks->reg);
-
- r9a06g032_init_h2mode(clocks);
-
---
-2.51.0
-
++
+ for (i = 0; i < ARRAY_SIZE(r9a06g032_clocks); ++i) {
+ const struct r9a06g032_clkdesc *d = &r9a06g032_clocks[i];
+ const char *parent_name = d->source ?
macintosh-mac_hid-fix-race-condition-in-mac_hid_togg.patch
wifi-cw1200-fix-potential-memory-leak-in-cw1200_bh_r.patch
nbd-defer-config-unlock-in-nbd_genl_connect.patch
-clk-renesas-r9a06g032-export-function-to-set-dmamux.patch
-soc-renesas-r9a06g032-sysctrl-handle-h2mode-setting-.patch
clk-renesas-r9a06g032-fix-memory-leak-in-error-path.patch
lib-vsprintf-check-pointer-before-dereferencing-in-t.patch
ocfs2-relax-bug-to-ocfs2_error-in-__ocfs2_move_exten.patch
+++ /dev/null
-From 2b777dc02f2e40c536b1a3663863d429992f4be9 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 5 Jan 2023 16:22:54 +0100
-Subject: soc: renesas: r9a06g032-sysctrl: Handle h2mode setting based on USBF
- presence
-
-From: Herve Codina <herve.codina@bootlin.com>
-
-[ Upstream commit e9fee814b054e4f6f2faf3d9c1944869fe41c9dd ]
-
-The CFG_USB[H2MODE] allows to switch the USB configuration. The
-configuration supported are:
- - One host and one device
-or
- - Two hosts
-
-Set CFG_USB[H2MODE] based on the USBF controller (USB device)
-availability.
-
-Signed-off-by: Herve Codina <herve.codina@bootlin.com>
-Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Link: https://lore.kernel.org/r/20230105152257.310642-3-herve.codina@bootlin.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Stable-dep-of: f8def051bbcf ("clk: renesas: r9a06g032: Fix memory leak in error path")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/clk/renesas/r9a06g032-clocks.c | 28 ++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
-
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index 65cd6ed68923e..b3fd97615fc4c 100644
---- a/drivers/clk/renesas/r9a06g032-clocks.c
-+++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -24,6 +24,8 @@
- #include <linux/spinlock.h>
- #include <dt-bindings/clock/r9a06g032-sysctrl.h>
-
-+#define R9A06G032_SYSCTRL_USB 0x00
-+#define R9A06G032_SYSCTRL_USB_H2MODE (1<<1)
- #define R9A06G032_SYSCTRL_DMAMUX 0xA0
-
- struct r9a06g032_gate {
-@@ -918,6 +920,29 @@ static void r9a06g032_clocks_del_clk_provider(void *data)
- of_clk_del_provider(data);
- }
-
-+static void __init r9a06g032_init_h2mode(struct r9a06g032_priv *clocks)
-+{
-+ struct device_node *usbf_np = NULL;
-+ u32 usb;
-+
-+ while ((usbf_np = of_find_compatible_node(usbf_np, NULL,
-+ "renesas,rzn1-usbf"))) {
-+ if (of_device_is_available(usbf_np))
-+ break;
-+ }
-+
-+ usb = readl(clocks->reg + R9A06G032_SYSCTRL_USB);
-+ if (usbf_np) {
-+ /* 1 host and 1 device mode */
-+ usb &= ~R9A06G032_SYSCTRL_USB_H2MODE;
-+ of_node_put(usbf_np);
-+ } else {
-+ /* 2 hosts mode */
-+ usb |= R9A06G032_SYSCTRL_USB_H2MODE;
-+ }
-+ writel(usb, clocks->reg + R9A06G032_SYSCTRL_USB);
-+}
-+
- static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
- {
- struct device *dev = &pdev->dev;
-@@ -947,6 +972,9 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
- clocks->reg = of_iomap(np, 0);
- if (WARN_ON(!clocks->reg))
- return -ENOMEM;
-+
-+ r9a06g032_init_h2mode(clocks);
-+
- for (i = 0; i < ARRAY_SIZE(r9a06g032_clocks); ++i) {
- const struct r9a06g032_clkdesc *d = &r9a06g032_clocks[i];
- const char *parent_name = d->source ?
---
-2.51.0
-
+++ /dev/null
-From 03cbaaa923499a558cc771f966367d16709760a9 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 27 Apr 2022 11:56:48 +0200
-Subject: clk: renesas: r9a06g032: Export function to set dmamux
-
-From: Miquel Raynal <miquel.raynal@bootlin.com>
-
-[ Upstream commit 885525c1e7e27ea6207d648a8db20dfbbd9e4238 ]
-
-The dmamux register is located within the system controller.
-
-Without syscon, we need an extra helper in order to give write access to
-this register to a dmamux driver.
-
-Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
-Acked-by: Stephen Boyd <sboyd@kernel.org>
-Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Link: https://lore.kernel.org/r/20220427095653.91804-5-miquel.raynal@bootlin.com
-Signed-off-by: Vinod Koul <vkoul@kernel.org>
-Stable-dep-of: f8def051bbcf ("clk: renesas: r9a06g032: Fix memory leak in error path")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/clk/renesas/r9a06g032-clocks.c | 35 ++++++++++++++++++-
- include/linux/soc/renesas/r9a06g032-sysctrl.h | 11 ++++++
- 2 files changed, 45 insertions(+), 1 deletion(-)
- create mode 100644 include/linux/soc/renesas/r9a06g032-sysctrl.h
-
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index 3e43ae8480ddf..9f42d46ce6192 100644
---- a/drivers/clk/renesas/r9a06g032-clocks.c
-+++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -20,9 +20,12 @@
- #include <linux/pm_clock.h>
- #include <linux/pm_domain.h>
- #include <linux/slab.h>
-+#include <linux/soc/renesas/r9a06g032-sysctrl.h>
- #include <linux/spinlock.h>
- #include <dt-bindings/clock/r9a06g032-sysctrl.h>
-
-+#define R9A06G032_SYSCTRL_DMAMUX 0xA0
-+
- struct r9a06g032_gate {
- u16 gate, reset, ready, midle,
- scon, mirack, mistat;
-@@ -315,6 +318,30 @@ struct r9a06g032_priv {
- void __iomem *reg;
- };
-
-+static struct r9a06g032_priv *sysctrl_priv;
-+
-+/* Exported helper to access the DMAMUX register */
-+int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val)
-+{
-+ unsigned long flags;
-+ u32 dmamux;
-+
-+ if (!sysctrl_priv)
-+ return -EPROBE_DEFER;
-+
-+ spin_lock_irqsave(&sysctrl_priv->lock, flags);
-+
-+ dmamux = readl(sysctrl_priv->reg + R9A06G032_SYSCTRL_DMAMUX);
-+ dmamux &= ~mask;
-+ dmamux |= val & mask;
-+ writel(dmamux, sysctrl_priv->reg + R9A06G032_SYSCTRL_DMAMUX);
-+
-+ spin_unlock_irqrestore(&sysctrl_priv->lock, flags);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(r9a06g032_sysctrl_set_dmamux);
-+
- /* register/bit pairs are encoded as an uint16_t */
- static void
- clk_rdesc_set(struct r9a06g032_priv *clocks,
-@@ -962,7 +989,13 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
- if (error)
- return error;
-
-- return r9a06g032_add_clk_domain(dev);
-+ error = r9a06g032_add_clk_domain(dev);
-+ if (error)
-+ return error;
-+
-+ sysctrl_priv = clocks;
-+
-+ return 0;
- }
-
- static const struct of_device_id r9a06g032_match[] = {
-diff --git a/include/linux/soc/renesas/r9a06g032-sysctrl.h b/include/linux/soc/renesas/r9a06g032-sysctrl.h
-new file mode 100644
-index 0000000000000..066dfb15cbddd
---- /dev/null
-+++ b/include/linux/soc/renesas/r9a06g032-sysctrl.h
-@@ -0,0 +1,11 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#ifndef __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__
-+#define __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__
-+
-+#ifdef CONFIG_CLK_R9A06G032
-+int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val);
-+#else
-+static inline int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val) { return -ENODEV; }
-+#endif
-+
-+#endif /* __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__ */
---
-2.51.0
-
-From 320095778cbcdbe31f82c86f862a77e639872922 Mon Sep 17 00:00:00 2001
+From 965e0e8f4f387e39aa13db221113f665d925ff30 Mon Sep 17 00:00:00 2001
From: Sasha Levin <sashal@kernel.org>
Date: Thu, 30 Oct 2025 14:16:03 +0800
Subject: clk: renesas: r9a06g032: Fix memory leak in error path
Link: https://patch.msgid.link/20251030061603.1954-1-vulab@iscas.ac.cn
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/clk/renesas/r9a06g032-clocks.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ drivers/clk/renesas/r9a06g032-clocks.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index e46280059db79..7ee8443a38041 100644
--- a/drivers/clk/renesas/r9a06g032-clocks.c
+++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -970,9 +970,9 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
+@@ -918,9 +918,10 @@ static int __init r9a06g032_clocks_probe
if (IS_ERR(mclk))
return PTR_ERR(mclk);
+ clocks->reg = devm_of_iomap(dev, np, 0, NULL);
+ if (IS_ERR(clocks->reg))
+ return PTR_ERR(clocks->reg);
-
- r9a06g032_init_h2mode(clocks);
-
---
-2.51.0
-
++
+ for (i = 0; i < ARRAY_SIZE(r9a06g032_clocks); ++i) {
+ const struct r9a06g032_clkdesc *d = &r9a06g032_clocks[i];
+ const char *parent_name = d->source ?
coresight-etm4x-add-isb-before-reading-the-trcstatr.patch
coresight-etm4x-extract-the-trace-unit-controlling.patch
coresight-etm4x-add-context-synchronization-before-e.patch
-clk-renesas-r9a06g032-export-function-to-set-dmamux.patch
-soc-renesas-r9a06g032-sysctrl-handle-h2mode-setting-.patch
clk-renesas-r9a06g032-fix-memory-leak-in-error-path.patch
lib-vsprintf-check-pointer-before-dereferencing-in-t.patch
ocfs2-relax-bug-to-ocfs2_error-in-__ocfs2_move_exten.patch
+++ /dev/null
-From 2bcf0fd9833c87ff340cba986995cf3b3f230dc9 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 5 Jan 2023 16:22:54 +0100
-Subject: soc: renesas: r9a06g032-sysctrl: Handle h2mode setting based on USBF
- presence
-
-From: Herve Codina <herve.codina@bootlin.com>
-
-[ Upstream commit e9fee814b054e4f6f2faf3d9c1944869fe41c9dd ]
-
-The CFG_USB[H2MODE] allows to switch the USB configuration. The
-configuration supported are:
- - One host and one device
-or
- - Two hosts
-
-Set CFG_USB[H2MODE] based on the USBF controller (USB device)
-availability.
-
-Signed-off-by: Herve Codina <herve.codina@bootlin.com>
-Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Link: https://lore.kernel.org/r/20230105152257.310642-3-herve.codina@bootlin.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Stable-dep-of: f8def051bbcf ("clk: renesas: r9a06g032: Fix memory leak in error path")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/clk/renesas/r9a06g032-clocks.c | 28 ++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
-
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index 9f42d46ce6192..e46280059db79 100644
---- a/drivers/clk/renesas/r9a06g032-clocks.c
-+++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -24,6 +24,8 @@
- #include <linux/spinlock.h>
- #include <dt-bindings/clock/r9a06g032-sysctrl.h>
-
-+#define R9A06G032_SYSCTRL_USB 0x00
-+#define R9A06G032_SYSCTRL_USB_H2MODE (1<<1)
- #define R9A06G032_SYSCTRL_DMAMUX 0xA0
-
- struct r9a06g032_gate {
-@@ -919,6 +921,29 @@ static void r9a06g032_clocks_del_clk_provider(void *data)
- of_clk_del_provider(data);
- }
-
-+static void __init r9a06g032_init_h2mode(struct r9a06g032_priv *clocks)
-+{
-+ struct device_node *usbf_np = NULL;
-+ u32 usb;
-+
-+ while ((usbf_np = of_find_compatible_node(usbf_np, NULL,
-+ "renesas,rzn1-usbf"))) {
-+ if (of_device_is_available(usbf_np))
-+ break;
-+ }
-+
-+ usb = readl(clocks->reg + R9A06G032_SYSCTRL_USB);
-+ if (usbf_np) {
-+ /* 1 host and 1 device mode */
-+ usb &= ~R9A06G032_SYSCTRL_USB_H2MODE;
-+ of_node_put(usbf_np);
-+ } else {
-+ /* 2 hosts mode */
-+ usb |= R9A06G032_SYSCTRL_USB_H2MODE;
-+ }
-+ writel(usb, clocks->reg + R9A06G032_SYSCTRL_USB);
-+}
-+
- static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
- {
- struct device *dev = &pdev->dev;
-@@ -948,6 +973,9 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
- clocks->reg = of_iomap(np, 0);
- if (WARN_ON(!clocks->reg))
- return -ENOMEM;
-+
-+ r9a06g032_init_h2mode(clocks);
-+
- for (i = 0; i < ARRAY_SIZE(r9a06g032_clocks); ++i) {
- const struct r9a06g032_clkdesc *d = &r9a06g032_clocks[i];
- const char *parent_name = d->source ?
---
-2.51.0
-