linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Samuel Holland <samuel@sholland.org>,
	Maxime Ripard <maxime@cerno.tech>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.15 003/279] clk: sunxi-ng: Unregister clocks/resets when unbinding
Date: Wed, 24 Nov 2021 12:54:50 +0100	[thread overview]
Message-ID: <20211124115718.887480462@linuxfoundation.org> (raw)
In-Reply-To: <20211124115718.776172708@linuxfoundation.org>

From: Samuel Holland <samuel@sholland.org>

[ Upstream commit 9bec2b9c6134052994115d2d3374e96f2ccb9b9d ]

Currently, unbinding a CCU driver unmaps the device's MMIO region, while
leaving its clocks/resets and their providers registered. This can cause
a page fault later when some clock operation tries to perform MMIO. Fix
this by separating the CCU initialization from the memory allocation,
and then using a devres callback to unregister the clocks and resets.

This also fixes a memory leak of the `struct ccu_reset`, and uses the
correct owner (the specific platform driver) for the clocks and resets.

Early OF clock providers are never unregistered, and limited error
handling is possible, so they are mostly unchanged. The error reporting
is made more consistent by moving the message inside of_sunxi_ccu_probe.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://lore.kernel.org/r/20210901050526.45673-2-samuel@sholland.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/clk/sunxi-ng/ccu-sun4i-a10.c     |  2 +-
 drivers/clk/sunxi-ng/ccu-sun50i-a100-r.c |  2 +-
 drivers/clk/sunxi-ng/ccu-sun50i-a100.c   |  2 +-
 drivers/clk/sunxi-ng/ccu-sun50i-a64.c    |  2 +-
 drivers/clk/sunxi-ng/ccu-sun50i-h6-r.c   |  2 +-
 drivers/clk/sunxi-ng/ccu-sun50i-h6.c     |  2 +-
 drivers/clk/sunxi-ng/ccu-sun50i-h616.c   |  4 +-
 drivers/clk/sunxi-ng/ccu-sun5i.c         |  2 +-
 drivers/clk/sunxi-ng/ccu-sun6i-a31.c     |  2 +-
 drivers/clk/sunxi-ng/ccu-sun8i-a23.c     |  2 +-
 drivers/clk/sunxi-ng/ccu-sun8i-a33.c     |  2 +-
 drivers/clk/sunxi-ng/ccu-sun8i-a83t.c    |  2 +-
 drivers/clk/sunxi-ng/ccu-sun8i-de2.c     |  2 +-
 drivers/clk/sunxi-ng/ccu-sun8i-h3.c      |  2 +-
 drivers/clk/sunxi-ng/ccu-sun8i-r.c       |  2 +-
 drivers/clk/sunxi-ng/ccu-sun8i-r40.c     |  2 +-
 drivers/clk/sunxi-ng/ccu-sun8i-v3s.c     |  2 +-
 drivers/clk/sunxi-ng/ccu-sun9i-a80-de.c  |  3 +-
 drivers/clk/sunxi-ng/ccu-sun9i-a80-usb.c |  3 +-
 drivers/clk/sunxi-ng/ccu-sun9i-a80.c     |  2 +-
 drivers/clk/sunxi-ng/ccu-suniv-f1c100s.c |  2 +-
 drivers/clk/sunxi-ng/ccu_common.c        | 89 ++++++++++++++++++++----
 drivers/clk/sunxi-ng/ccu_common.h        |  6 +-
 23 files changed, 100 insertions(+), 41 deletions(-)

diff --git a/drivers/clk/sunxi-ng/ccu-sun4i-a10.c b/drivers/clk/sunxi-ng/ccu-sun4i-a10.c
index f32366d9336e7..bd9a8782fec3d 100644
--- a/drivers/clk/sunxi-ng/ccu-sun4i-a10.c
+++ b/drivers/clk/sunxi-ng/ccu-sun4i-a10.c
@@ -1464,7 +1464,7 @@ static void __init sun4i_ccu_init(struct device_node *node,
 	val &= ~GENMASK(7, 6);
 	writel(val | (2 << 6), reg + SUN4I_AHB_REG);
 
-	sunxi_ccu_probe(node, reg, desc);
+	of_sunxi_ccu_probe(node, reg, desc);
 }
 
 static void __init sun4i_a10_ccu_setup(struct device_node *node)
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a100-r.c b/drivers/clk/sunxi-ng/ccu-sun50i-a100-r.c
index a56142b909938..6f2a589705561 100644
--- a/drivers/clk/sunxi-ng/ccu-sun50i-a100-r.c
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-a100-r.c
@@ -196,7 +196,7 @@ static int sun50i_a100_r_ccu_probe(struct platform_device *pdev)
 	if (IS_ERR(reg))
 		return PTR_ERR(reg);
 
-	return sunxi_ccu_probe(pdev->dev.of_node, reg, &sun50i_a100_r_ccu_desc);
+	return devm_sunxi_ccu_probe(&pdev->dev, reg, &sun50i_a100_r_ccu_desc);
 }
 
 static const struct of_device_id sun50i_a100_r_ccu_ids[] = {
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a100.c b/drivers/clk/sunxi-ng/ccu-sun50i-a100.c
index 81b48c73d389f..913bb08e6dee8 100644
--- a/drivers/clk/sunxi-ng/ccu-sun50i-a100.c
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-a100.c
@@ -1247,7 +1247,7 @@ static int sun50i_a100_ccu_probe(struct platform_device *pdev)
 		writel(val, reg + sun50i_a100_usb2_clk_regs[i]);
 	}
 
-	ret = sunxi_ccu_probe(pdev->dev.of_node, reg, &sun50i_a100_ccu_desc);
+	ret = devm_sunxi_ccu_probe(&pdev->dev, reg, &sun50i_a100_ccu_desc);
 	if (ret)
 		return ret;
 
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
index 149cfde817cba..54f25c624f020 100644
--- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
@@ -955,7 +955,7 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev)
 
 	writel(0x515, reg + SUN50I_A64_PLL_MIPI_REG);
 
-	ret = sunxi_ccu_probe(pdev->dev.of_node, reg, &sun50i_a64_ccu_desc);
+	ret = devm_sunxi_ccu_probe(&pdev->dev, reg, &sun50i_a64_ccu_desc);
 	if (ret)
 		return ret;
 
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h6-r.c b/drivers/clk/sunxi-ng/ccu-sun50i-h6-r.c
index f8909a7ed5539..f30d7eb5424d8 100644
--- a/drivers/clk/sunxi-ng/ccu-sun50i-h6-r.c
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-h6-r.c
@@ -232,7 +232,7 @@ static void __init sunxi_r_ccu_init(struct device_node *node,
 		return;
 	}
 
-	sunxi_ccu_probe(node, reg, desc);
+	of_sunxi_ccu_probe(node, reg, desc);
 }
 
 static void __init sun50i_h6_r_ccu_setup(struct device_node *node)
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
index bff446b782907..c0800da2fa3d7 100644
--- a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
@@ -1240,7 +1240,7 @@ static int sun50i_h6_ccu_probe(struct platform_device *pdev)
 	val |= BIT(24);
 	writel(val, reg + SUN50I_H6_HDMI_CEC_CLK_REG);
 
-	return sunxi_ccu_probe(pdev->dev.of_node, reg, &sun50i_h6_ccu_desc);
+	return devm_sunxi_ccu_probe(&pdev->dev, reg, &sun50i_h6_ccu_desc);
 }
 
 static const struct of_device_id sun50i_h6_ccu_ids[] = {
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h616.c b/drivers/clk/sunxi-ng/ccu-sun50i-h616.c
index 225307305880e..22eb18079a154 100644
--- a/drivers/clk/sunxi-ng/ccu-sun50i-h616.c
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-h616.c
@@ -1141,9 +1141,7 @@ static void __init sun50i_h616_ccu_setup(struct device_node *node)
 	val |= BIT(24);
 	writel(val, reg + SUN50I_H616_HDMI_CEC_CLK_REG);
 
-	i = sunxi_ccu_probe(node, reg, &sun50i_h616_ccu_desc);
-	if (i)
-		pr_err("%pOF: probing clocks fails: %d\n", node, i);
+	of_sunxi_ccu_probe(node, reg, &sun50i_h616_ccu_desc);
 }
 
 CLK_OF_DECLARE(sun50i_h616_ccu, "allwinner,sun50i-h616-ccu",
diff --git a/drivers/clk/sunxi-ng/ccu-sun5i.c b/drivers/clk/sunxi-ng/ccu-sun5i.c
index b78e9b507c1c6..1f4bc0e773a7e 100644
--- a/drivers/clk/sunxi-ng/ccu-sun5i.c
+++ b/drivers/clk/sunxi-ng/ccu-sun5i.c
@@ -1012,7 +1012,7 @@ static void __init sun5i_ccu_init(struct device_node *node,
 	val &= ~GENMASK(7, 6);
 	writel(val | (2 << 6), reg + SUN5I_AHB_REG);
 
-	sunxi_ccu_probe(node, reg, desc);
+	of_sunxi_ccu_probe(node, reg, desc);
 }
 
 static void __init sun5i_a10s_ccu_setup(struct device_node *node)
diff --git a/drivers/clk/sunxi-ng/ccu-sun6i-a31.c b/drivers/clk/sunxi-ng/ccu-sun6i-a31.c
index 9b40d53266a3f..3df5c0b415804 100644
--- a/drivers/clk/sunxi-ng/ccu-sun6i-a31.c
+++ b/drivers/clk/sunxi-ng/ccu-sun6i-a31.c
@@ -1257,7 +1257,7 @@ static void __init sun6i_a31_ccu_setup(struct device_node *node)
 	val |= 0x3 << 12;
 	writel(val, reg + SUN6I_A31_AHB1_REG);
 
-	sunxi_ccu_probe(node, reg, &sun6i_a31_ccu_desc);
+	of_sunxi_ccu_probe(node, reg, &sun6i_a31_ccu_desc);
 
 	ccu_mux_notifier_register(pll_cpu_clk.common.hw.clk,
 				  &sun6i_a31_cpu_nb);
diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-a23.c b/drivers/clk/sunxi-ng/ccu-sun8i-a23.c
index 103aa504f6c8a..577bb235d6584 100644
--- a/drivers/clk/sunxi-ng/ccu-sun8i-a23.c
+++ b/drivers/clk/sunxi-ng/ccu-sun8i-a23.c
@@ -745,7 +745,7 @@ static void __init sun8i_a23_ccu_setup(struct device_node *node)
 	val &= ~BIT(16);
 	writel(val, reg + SUN8I_A23_PLL_MIPI_REG);
 
-	sunxi_ccu_probe(node, reg, &sun8i_a23_ccu_desc);
+	of_sunxi_ccu_probe(node, reg, &sun8i_a23_ccu_desc);
 }
 CLK_OF_DECLARE(sun8i_a23_ccu, "allwinner,sun8i-a23-ccu",
 	       sun8i_a23_ccu_setup);
diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-a33.c b/drivers/clk/sunxi-ng/ccu-sun8i-a33.c
index 91838cd110377..8f65cd03f5acc 100644
--- a/drivers/clk/sunxi-ng/ccu-sun8i-a33.c
+++ b/drivers/clk/sunxi-ng/ccu-sun8i-a33.c
@@ -805,7 +805,7 @@ static void __init sun8i_a33_ccu_setup(struct device_node *node)
 	val &= ~BIT(16);
 	writel(val, reg + SUN8I_A33_PLL_MIPI_REG);
 
-	sunxi_ccu_probe(node, reg, &sun8i_a33_ccu_desc);
+	of_sunxi_ccu_probe(node, reg, &sun8i_a33_ccu_desc);
 
 	/* Gate then ungate PLL CPU after any rate changes */
 	ccu_pll_notifier_register(&sun8i_a33_pll_cpu_nb);
diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-a83t.c b/drivers/clk/sunxi-ng/ccu-sun8i-a83t.c
index 2b434521c5ccf..c2ddcd2ddab4e 100644
--- a/drivers/clk/sunxi-ng/ccu-sun8i-a83t.c
+++ b/drivers/clk/sunxi-ng/ccu-sun8i-a83t.c
@@ -906,7 +906,7 @@ static int sun8i_a83t_ccu_probe(struct platform_device *pdev)
 	sun8i_a83t_cpu_pll_fixup(reg + SUN8I_A83T_PLL_C0CPUX_REG);
 	sun8i_a83t_cpu_pll_fixup(reg + SUN8I_A83T_PLL_C1CPUX_REG);
 
-	return sunxi_ccu_probe(pdev->dev.of_node, reg, &sun8i_a83t_ccu_desc);
+	return devm_sunxi_ccu_probe(&pdev->dev, reg, &sun8i_a83t_ccu_desc);
 }
 
 static const struct of_device_id sun8i_a83t_ccu_ids[] = {
diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-de2.c b/drivers/clk/sunxi-ng/ccu-sun8i-de2.c
index 524f33275bc73..4b94b6041b271 100644
--- a/drivers/clk/sunxi-ng/ccu-sun8i-de2.c
+++ b/drivers/clk/sunxi-ng/ccu-sun8i-de2.c
@@ -342,7 +342,7 @@ static int sunxi_de2_clk_probe(struct platform_device *pdev)
 		goto err_disable_mod_clk;
 	}
 
-	ret = sunxi_ccu_probe(pdev->dev.of_node, reg, ccu_desc);
+	ret = devm_sunxi_ccu_probe(&pdev->dev, reg, ccu_desc);
 	if (ret)
 		goto err_assert_reset;
 
diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-h3.c b/drivers/clk/sunxi-ng/ccu-sun8i-h3.c
index 7e629a4493afd..d2fc2903787d8 100644
--- a/drivers/clk/sunxi-ng/ccu-sun8i-h3.c
+++ b/drivers/clk/sunxi-ng/ccu-sun8i-h3.c
@@ -1154,7 +1154,7 @@ static void __init sunxi_h3_h5_ccu_init(struct device_node *node,
 	val &= ~GENMASK(19, 16);
 	writel(val | (0 << 16), reg + SUN8I_H3_PLL_AUDIO_REG);
 
-	sunxi_ccu_probe(node, reg, desc);
+	of_sunxi_ccu_probe(node, reg, desc);
 
 	/* Gate then ungate PLL CPU after any rate changes */
 	ccu_pll_notifier_register(&sun8i_h3_pll_cpu_nb);
diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-r.c b/drivers/clk/sunxi-ng/ccu-sun8i-r.c
index 4c8c491b87c27..9e754d1f754a1 100644
--- a/drivers/clk/sunxi-ng/ccu-sun8i-r.c
+++ b/drivers/clk/sunxi-ng/ccu-sun8i-r.c
@@ -265,7 +265,7 @@ static void __init sunxi_r_ccu_init(struct device_node *node,
 		return;
 	}
 
-	sunxi_ccu_probe(node, reg, desc);
+	of_sunxi_ccu_probe(node, reg, desc);
 }
 
 static void __init sun8i_a83t_r_ccu_setup(struct device_node *node)
diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-r40.c b/drivers/clk/sunxi-ng/ccu-sun8i-r40.c
index 84153418453f4..002e0c3a04dbe 100644
--- a/drivers/clk/sunxi-ng/ccu-sun8i-r40.c
+++ b/drivers/clk/sunxi-ng/ccu-sun8i-r40.c
@@ -1346,7 +1346,7 @@ static int sun8i_r40_ccu_probe(struct platform_device *pdev)
 	if (IS_ERR(regmap))
 		return PTR_ERR(regmap);
 
-	ret = sunxi_ccu_probe(pdev->dev.of_node, reg, &sun8i_r40_ccu_desc);
+	ret = devm_sunxi_ccu_probe(&pdev->dev, reg, &sun8i_r40_ccu_desc);
 	if (ret)
 		return ret;
 
diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-v3s.c b/drivers/clk/sunxi-ng/ccu-sun8i-v3s.c
index f49724a22540e..ce150f83ab54e 100644
--- a/drivers/clk/sunxi-ng/ccu-sun8i-v3s.c
+++ b/drivers/clk/sunxi-ng/ccu-sun8i-v3s.c
@@ -822,7 +822,7 @@ static void __init sun8i_v3_v3s_ccu_init(struct device_node *node,
 	val &= ~GENMASK(19, 16);
 	writel(val, reg + SUN8I_V3S_PLL_AUDIO_REG);
 
-	sunxi_ccu_probe(node, reg, ccu_desc);
+	of_sunxi_ccu_probe(node, reg, ccu_desc);
 }
 
 static void __init sun8i_v3s_ccu_setup(struct device_node *node)
diff --git a/drivers/clk/sunxi-ng/ccu-sun9i-a80-de.c b/drivers/clk/sunxi-ng/ccu-sun9i-a80-de.c
index 6616e8114f623..261e64416f26a 100644
--- a/drivers/clk/sunxi-ng/ccu-sun9i-a80-de.c
+++ b/drivers/clk/sunxi-ng/ccu-sun9i-a80-de.c
@@ -246,8 +246,7 @@ static int sun9i_a80_de_clk_probe(struct platform_device *pdev)
 		goto err_disable_clk;
 	}
 
-	ret = sunxi_ccu_probe(pdev->dev.of_node, reg,
-			      &sun9i_a80_de_clk_desc);
+	ret = devm_sunxi_ccu_probe(&pdev->dev, reg, &sun9i_a80_de_clk_desc);
 	if (ret)
 		goto err_assert_reset;
 
diff --git a/drivers/clk/sunxi-ng/ccu-sun9i-a80-usb.c b/drivers/clk/sunxi-ng/ccu-sun9i-a80-usb.c
index 4b4a507d04edf..596243b3e0fa3 100644
--- a/drivers/clk/sunxi-ng/ccu-sun9i-a80-usb.c
+++ b/drivers/clk/sunxi-ng/ccu-sun9i-a80-usb.c
@@ -117,8 +117,7 @@ static int sun9i_a80_usb_clk_probe(struct platform_device *pdev)
 		return ret;
 	}
 
-	ret = sunxi_ccu_probe(pdev->dev.of_node, reg,
-			      &sun9i_a80_usb_clk_desc);
+	ret = devm_sunxi_ccu_probe(&pdev->dev, reg, &sun9i_a80_usb_clk_desc);
 	if (ret)
 		goto err_disable_clk;
 
diff --git a/drivers/clk/sunxi-ng/ccu-sun9i-a80.c b/drivers/clk/sunxi-ng/ccu-sun9i-a80.c
index ef29582676f6e..97aaed0e68500 100644
--- a/drivers/clk/sunxi-ng/ccu-sun9i-a80.c
+++ b/drivers/clk/sunxi-ng/ccu-sun9i-a80.c
@@ -1231,7 +1231,7 @@ static int sun9i_a80_ccu_probe(struct platform_device *pdev)
 	sun9i_a80_cpu_pll_fixup(reg + SUN9I_A80_PLL_C0CPUX_REG);
 	sun9i_a80_cpu_pll_fixup(reg + SUN9I_A80_PLL_C1CPUX_REG);
 
-	return sunxi_ccu_probe(pdev->dev.of_node, reg, &sun9i_a80_ccu_desc);
+	return devm_sunxi_ccu_probe(&pdev->dev, reg, &sun9i_a80_ccu_desc);
 }
 
 static const struct of_device_id sun9i_a80_ccu_ids[] = {
diff --git a/drivers/clk/sunxi-ng/ccu-suniv-f1c100s.c b/drivers/clk/sunxi-ng/ccu-suniv-f1c100s.c
index 7ecc3a5a5b5e1..61ad7ee91c114 100644
--- a/drivers/clk/sunxi-ng/ccu-suniv-f1c100s.c
+++ b/drivers/clk/sunxi-ng/ccu-suniv-f1c100s.c
@@ -538,7 +538,7 @@ static void __init suniv_f1c100s_ccu_setup(struct device_node *node)
 	val &= ~GENMASK(19, 16);
 	writel(val | (3 << 16), reg + SUNIV_PLL_AUDIO_REG);
 
-	sunxi_ccu_probe(node, reg, &suniv_ccu_desc);
+	of_sunxi_ccu_probe(node, reg, &suniv_ccu_desc);
 
 	/* Gate then ungate PLL CPU after any rate changes */
 	ccu_pll_notifier_register(&suniv_pll_cpu_nb);
diff --git a/drivers/clk/sunxi-ng/ccu_common.c b/drivers/clk/sunxi-ng/ccu_common.c
index 2e20e650b6c01..88cb569e58358 100644
--- a/drivers/clk/sunxi-ng/ccu_common.c
+++ b/drivers/clk/sunxi-ng/ccu_common.c
@@ -7,6 +7,7 @@
 
 #include <linux/clk.h>
 #include <linux/clk-provider.h>
+#include <linux/device.h>
 #include <linux/iopoll.h>
 #include <linux/slab.h>
 
@@ -14,6 +15,11 @@
 #include "ccu_gate.h"
 #include "ccu_reset.h"
 
+struct sunxi_ccu {
+	const struct sunxi_ccu_desc	*desc;
+	struct ccu_reset		reset;
+};
+
 static DEFINE_SPINLOCK(ccu_lock);
 
 void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock)
@@ -79,12 +85,15 @@ int ccu_pll_notifier_register(struct ccu_pll_nb *pll_nb)
 				     &pll_nb->clk_nb);
 }
 
-int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
-		    const struct sunxi_ccu_desc *desc)
+static int sunxi_ccu_probe(struct sunxi_ccu *ccu, struct device *dev,
+			   struct device_node *node, void __iomem *reg,
+			   const struct sunxi_ccu_desc *desc)
 {
 	struct ccu_reset *reset;
 	int i, ret;
 
+	ccu->desc = desc;
+
 	for (i = 0; i < desc->num_ccu_clks; i++) {
 		struct ccu_common *cclk = desc->ccu_clks[i];
 
@@ -103,7 +112,10 @@ int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
 			continue;
 
 		name = hw->init->name;
-		ret = of_clk_hw_register(node, hw);
+		if (dev)
+			ret = clk_hw_register(dev, hw);
+		else
+			ret = of_clk_hw_register(node, hw);
 		if (ret) {
 			pr_err("Couldn't register clock %d - %s\n", i, name);
 			goto err_clk_unreg;
@@ -115,15 +127,10 @@ int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
 	if (ret)
 		goto err_clk_unreg;
 
-	reset = kzalloc(sizeof(*reset), GFP_KERNEL);
-	if (!reset) {
-		ret = -ENOMEM;
-		goto err_alloc_reset;
-	}
-
+	reset = &ccu->reset;
 	reset->rcdev.of_node = node;
 	reset->rcdev.ops = &ccu_reset_ops;
-	reset->rcdev.owner = THIS_MODULE;
+	reset->rcdev.owner = dev ? dev->driver->owner : THIS_MODULE;
 	reset->rcdev.nr_resets = desc->num_resets;
 	reset->base = reg;
 	reset->lock = &ccu_lock;
@@ -131,13 +138,11 @@ int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
 
 	ret = reset_controller_register(&reset->rcdev);
 	if (ret)
-		goto err_of_clk_unreg;
+		goto err_del_provider;
 
 	return 0;
 
-err_of_clk_unreg:
-	kfree(reset);
-err_alloc_reset:
+err_del_provider:
 	of_clk_del_provider(node);
 err_clk_unreg:
 	while (--i >= 0) {
@@ -149,3 +154,59 @@ err_clk_unreg:
 	}
 	return ret;
 }
+
+static void devm_sunxi_ccu_release(struct device *dev, void *res)
+{
+	struct sunxi_ccu *ccu = res;
+	const struct sunxi_ccu_desc *desc = ccu->desc;
+	int i;
+
+	reset_controller_unregister(&ccu->reset.rcdev);
+	of_clk_del_provider(dev->of_node);
+
+	for (i = 0; i < desc->hw_clks->num; i++) {
+		struct clk_hw *hw = desc->hw_clks->hws[i];
+
+		if (!hw)
+			continue;
+		clk_hw_unregister(hw);
+	}
+}
+
+int devm_sunxi_ccu_probe(struct device *dev, void __iomem *reg,
+			 const struct sunxi_ccu_desc *desc)
+{
+	struct sunxi_ccu *ccu;
+	int ret;
+
+	ccu = devres_alloc(devm_sunxi_ccu_release, sizeof(*ccu), GFP_KERNEL);
+	if (!ccu)
+		return -ENOMEM;
+
+	ret = sunxi_ccu_probe(ccu, dev, dev->of_node, reg, desc);
+	if (ret) {
+		devres_free(ccu);
+		return ret;
+	}
+
+	devres_add(dev, ccu);
+
+	return 0;
+}
+
+void of_sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
+			const struct sunxi_ccu_desc *desc)
+{
+	struct sunxi_ccu *ccu;
+	int ret;
+
+	ccu = kzalloc(sizeof(*ccu), GFP_KERNEL);
+	if (!ccu)
+		return;
+
+	ret = sunxi_ccu_probe(ccu, NULL, node, reg, desc);
+	if (ret) {
+		pr_err("%pOF: probing clocks failed: %d\n", node, ret);
+		kfree(ccu);
+	}
+}
diff --git a/drivers/clk/sunxi-ng/ccu_common.h b/drivers/clk/sunxi-ng/ccu_common.h
index 04e7a12200a21..98a1834b58bb4 100644
--- a/drivers/clk/sunxi-ng/ccu_common.h
+++ b/drivers/clk/sunxi-ng/ccu_common.h
@@ -63,7 +63,9 @@ struct ccu_pll_nb {
 
 int ccu_pll_notifier_register(struct ccu_pll_nb *pll_nb);
 
-int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
-		    const struct sunxi_ccu_desc *desc);
+int devm_sunxi_ccu_probe(struct device *dev, void __iomem *reg,
+			 const struct sunxi_ccu_desc *desc);
+void of_sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
+			const struct sunxi_ccu_desc *desc);
 
 #endif /* _COMMON_H_ */
-- 
2.33.0




  parent reply	other threads:[~2021-11-24 13:42 UTC|newest]

Thread overview: 285+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-24 11:54 [PATCH 5.15 000/279] 5.15.5-rc1 review Greg Kroah-Hartman
2021-11-24 11:54 ` [PATCH 5.15 001/279] arm64: zynqmp: Do not duplicate flash partition label property Greg Kroah-Hartman
2021-11-24 11:54 ` [PATCH 5.15 002/279] arm64: zynqmp: Fix serial compatible string Greg Kroah-Hartman
2021-11-24 11:54 ` Greg Kroah-Hartman [this message]
2021-11-24 11:54 ` [PATCH 5.15 004/279] ARM: dts: sunxi: Fix OPPs node name Greg Kroah-Hartman
2021-11-24 11:54 ` [PATCH 5.15 005/279] arm64: dts: allwinner: h5: Fix GPU thermal zone " Greg Kroah-Hartman
2021-11-24 11:54 ` [PATCH 5.15 006/279] arm64: dts: allwinner: a100: Fix " Greg Kroah-Hartman
2021-11-24 11:54 ` [PATCH 5.15 007/279] staging: wfx: ensure IRQ is ready before enabling it Greg Kroah-Hartman
2021-11-24 11:54 ` [PATCH 5.15 008/279] ARM: dts: BCM5301X: Fix nodes names Greg Kroah-Hartman
2021-11-24 11:54 ` [PATCH 5.15 009/279] ARM: dts: BCM5301X: Fix MDIO mux binding Greg Kroah-Hartman
2021-11-24 11:54 ` [PATCH 5.15 010/279] ARM: dts: NSP: Fix mpcore, mmc node names Greg Kroah-Hartman
2021-11-24 11:54 ` [PATCH 5.15 011/279] arm64: dts: broadcom: bcm4908: Move reboot syscon out of bus Greg Kroah-Hartman
2021-11-24 11:54 ` [PATCH 5.15 012/279] scsi: pm80xx: Fix memory leak during rmmod Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 013/279] scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq() Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 014/279] ASoC: mediatek: mt8195: Add missing of_node_put() Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 015/279] arm64: dts: rockchip: Disable CDN DP on Pinebook Pro Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 016/279] arm64: dts: hisilicon: fix arm,sp805 compatible string Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 017/279] RDMA/bnxt_re: Check if the vlan is valid before reporting Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 018/279] bus: ti-sysc: Add quirk handling for reinit on context lost Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 019/279] bus: ti-sysc: Use context lost quirk for otg Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 020/279] usb: musb: tusb6010: check return value after calling platform_get_resource() Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 021/279] usb: typec: tipd: Remove WARN_ON in tps6598x_block_read Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 022/279] ARM: dts: ux500: Skomer regulator fixes Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 023/279] staging: rtl8723bs: remove possible deadlock when disconnect (v2) Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 024/279] staging: rtl8723bs: remove a second possible deadlock Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 025/279] staging: rtl8723bs: remove a third " Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 026/279] ARM: BCM53016: Specify switch ports for Meraki MR32 Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 027/279] arm64: dts: qcom: msm8998: Fix CPU/L2 idle state latency and residency Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 028/279] arm64: dts: qcom: ipq6018: Fix qcom,controlled-remotely property Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 029/279] arm64: dts: qcom: ipq8074: " Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 030/279] arm64: dts: qcom: sdm845: " Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 031/279] arm64: dts: qcom: msm8916: Add unit name for /soc node Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 032/279] arm64: dts: freescale: fix arm,sp805 compatible string Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 033/279] arm64: dts: ls1012a: Add serial alias for ls1012a-rdb Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 034/279] RDMA/rxe: Separate HW and SW l/rkeys Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 035/279] ASoC: SOF: Intel: hda-dai: fix potential locking issue Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 036/279] scsi: core: Fix scsi_mode_sense() buffer length handling Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 037/279] ALSA: usb-audio: disable implicit feedback sync for Behringer UFX1204 and UFX1604 Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 038/279] clk: imx: imx6ul: Move csi_sel mux to correct base register Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 039/279] ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 040/279] ASoC: rt5651: " Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 041/279] ASoC: nau8824: Add DMI quirk mechanism for active-high jack-detect Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 042/279] scsi: advansys: Fix kernel pointer leak Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 043/279] scsi: smartpqi: Add controller handshake during kdump Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 044/279] arm64: dts: imx8mm-kontron: Fix reset delays for ethernet PHY Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 045/279] ALSA: intel-dsp-config: add quirk for APL/GLK/TGL devices based on ES8336 codec Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 046/279] ASoC: Intel: soc-acpi: add missing quirk for TGL SDCA single amp Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 047/279] ASoC: Intel: sof_sdw: add missing quirk for Dell SKU 0A45 Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 048/279] firmware_loader: fix pre-allocated buf built-in firmware use Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 049/279] cpuidle: tegra: Check whether PMC is ready Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 050/279] HID: multitouch: disable sticky fingers for UPERFECT Y Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 051/279] ALSA: usb-audio: Add support for the Pioneer DJM 750MK2 Mixer/Soundcard Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 052/279] ARM: dts: omap: fix gpmc,mux-add-data type Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 053/279] usb: host: ohci-tmio: check return value after calling platform_get_resource() Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 054/279] ASoC: rt5682: fix a little pop while playback Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 055/279] ARM: dts: ls1021a: move thermal-zones node out of soc/ Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 056/279] ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" compatible for flash Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 057/279] ALSA: ISA: not for M68K Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 058/279] iommu/vt-d: Do not falsely log intel_iommu is unsupported kernel option Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 059/279] tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 060/279] MIPS: sni: Fix the build Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 061/279] scsi: scsi_debug: Fix out-of-bound read in resp_readcap16() Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 062/279] scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs() Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 063/279] scsi: target: Fix ordered tag handling Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 064/279] scsi: target: Fix alua_tg_pt_gps_count tracking Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 065/279] iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_set_odr() Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 066/279] RDMA/core: Use kvzalloc when allocating the struct ib_port Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 067/279] scsi: lpfc: Fix use-after-free in lpfc_unreg_rpi() routine Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 068/279] scsi: lpfc: Fix link down processing to address NULL pointer dereference Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 069/279] scsi: lpfc: Allow fabric node recovery if recovery is in progress before devloss Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 070/279] memory: tegra20-emc: Add runtime dependency on devfreq governor module Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 071/279] powerpc/5200: dts: fix memory node unit name Greg Kroah-Hartman
2021-11-24 11:55 ` [PATCH 5.15 072/279] ARM: dts: qcom: fix memory and mdio nodes naming for RB3011 Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 073/279] arm64: dts: qcom: Fix node name of rpm-msg-ram device nodes Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 074/279] ALSA: gus: fix null pointer dereference on pointer block Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 075/279] ALSA: usb-audio: fix null pointer dereference on pointer cs_desc Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 076/279] clk: at91: sama7g5: remove prescaler part of master clock Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 077/279] iommu/dart: Initialize DART_STREAMS_ENABLE Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 078/279] powerpc/dcr: Use cmplwi instead of 3-argument cmpli Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 079/279] powerpc/8xx: Fix Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 080/279] sh: check return code of request_irq Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 081/279] maple: fix wrong return value of maple_bus_init() Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 082/279] f2fs: fix up f2fs_lookup tracepoints Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 083/279] f2fs: fix to use WHINT_MODE Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 084/279] f2fs: fix wrong condition to trigger background checkpoint correctly Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 085/279] sh: fix kconfig unmet dependency warning for FRAME_POINTER Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 086/279] sh: math-emu: drop unused functions Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 087/279] sh: define __BIG_ENDIAN for math-emu Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 088/279] f2fs: compress: disallow disabling compress on non-empty compressed file Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 089/279] f2fs: fix incorrect return value in f2fs_sanity_check_ckpt() Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 090/279] clk: ingenic: Fix bugs with divided dividers Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 091/279] clk/ast2600: Fix soc revision for AHB Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 092/279] clk: qcom: gcc-msm8996: Drop (again) gcc_aggre1_pnoc_ahb_clk Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 093/279] KVM: arm64: Fix host stage-2 finalization Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 094/279] mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 095/279] MIPS: boot/compressed/: add __bswapdi2() to target for ZSTD decompression Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 096/279] sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain() Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 097/279] sched/fair: Prevent dead task groups from regaining cfs_rqs Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 098/279] perf/x86/vlbr: Add c->flags to vlbr event constraints Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 099/279] blkcg: Remove extra blkcg_bio_issue_init Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 100/279] tracing/histogram: Do not copy the fixed-size char array field over the field size Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 101/279] perf bpf: Avoid memory leak from perf_env__insert_btf() Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 102/279] perf bench futex: Fix memory leak of perf_cpu_map__new() Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 103/279] perf tests: Remove bash construct from record+zstd_comp_decomp.sh Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 104/279] drm/nouveau: hdmigv100.c: fix corrupted HDMI Vendor InfoFrame Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 105/279] bpf: Fix inner map state pruning regression Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 106/279] samples/bpf: Fix summary per-sec stats in xdp_sample_user Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 107/279] samples/bpf: Fix incorrect use of strlen in xdp_redirect_cpu Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 108/279] selftests: net: switch to socat in the GSO GRE test Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 109/279] net/ipa: ipa_resource: Fix wrong for loop range Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 110/279] tcp: Fix uninitialized access in skb frags array for Rx 0cp Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 111/279] tracing: Add length protection to histogram string copies Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 112/279] nl80211: fix radio statistics in survey dump Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 113/279] mac80211: fix monitor_sdata RCU/locking assertions Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 114/279] net: ipa: HOLB register sometimes must be written twice Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 115/279] net: ipa: disable HOLB drop when updating timer Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 116/279] selftests: gpio: fix gpio compiling error Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 117/279] net: bnx2x: fix variable dereferenced before check Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 118/279] bnxt_en: reject indirect blk offload when hw-tc-offload is off Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 119/279] tipc: only accept encrypted MSG_CRYPTO msgs Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 120/279] sock: fix /proc/net/sockstat underflow in sk_clone_lock() Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 121/279] net/smc: Make sure the link_id is unique Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 122/279] NFSD: Fix exposure in nfsd4_decode_bitmap() Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 123/279] iavf: Fix return of set the new channel count Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 124/279] iavf: check for null in iavf_fix_features Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 125/279] iavf: free q_vectors before queues in iavf_disable_vf Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 126/279] iavf: dont clear a lock we dont hold Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 127/279] iavf: Fix failure to exit out from last all-multicast mode Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 128/279] iavf: prevent accidental free of filter structure Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 129/279] iavf: validate pointers Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 130/279] iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 131/279] iavf: Fix for setting queues to 0 Greg Kroah-Hartman
2021-11-24 11:56 ` [PATCH 5.15 132/279] iavf: Restore VLAN filters after link down Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 133/279] bpf: Fix toctou on read-only maps constant scalar tracking Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 134/279] MIPS: generic/yamon-dt: fix uninitialized variable error Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 135/279] mips: bcm63xx: add support for clk_get_parent() Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 136/279] mips: lantiq: " Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 137/279] gpio: rockchip: needs GENERIC_IRQ_CHIP to fix build errors Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 138/279] platform/x86: hp_accel: Fix an error handling path in lis3lv02d_probe() Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 139/279] platform/x86: think-lmi: Abort probe on analyze failure Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 140/279] udp: Validate checksum in udp_read_sock() Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 141/279] btrfs: make 1-bit bit-fields of scrub_page unsigned int Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 142/279] RDMA/core: Set send and receive CQ before forwarding to the driver Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 143/279] net/mlx5e: kTLS, Fix crash in RX resync flow Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 144/279] net/mlx5e: Wait for concurrent flow deletion during neigh/fib events Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 145/279] net/mlx5: E-Switch, Fix resetting of encap mode when entering switchdev Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 146/279] net/mlx5e: nullify cq->dbg pointer in mlx5_debug_cq_remove() Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 147/279] net/mlx5: Update error handler for UCTX and UMEM Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 148/279] net/mlx5: E-Switch, rebuild lag only when needed Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 149/279] net/mlx5e: CT, Fix multiple allocations and memleak of mod acts Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 150/279] net/mlx5: Lag, update tracker when state change event received Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 151/279] net/mlx5: E-Switch, return error if encap isnt supported Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 152/279] scsi: ufs: core: Improve SCSI abort handling Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 153/279] scsi: core: sysfs: Fix hang when device state is set via sysfs Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 154/279] scsi: ufs: core: Fix task management completion timeout race Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 155/279] scsi: ufs: core: Fix another task management completion race Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 156/279] net: mvmdio: fix compilation warning Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 157/279] net: sched: act_mirred: drop dst for the direction from egress to ingress Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 158/279] net: dpaa2-eth: fix use-after-free in dpaa2_eth_remove Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 159/279] net: virtio_net_hdr_to_skb: count transport header in UFO Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 160/279] i40e: Fix correct max_pkt_size on VF RX queue Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 161/279] i40e: Fix NULL ptr dereference on VSI filter sync Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 162/279] i40e: Fix changing previously set num_queue_pairs for PFs Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 163/279] i40e: Fix ping is lost after configuring ADq on VF Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 164/279] RDMA/mlx4: Do not fail the registration on port stats Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 165/279] i40e: Fix warning message and call stack during rmmod i40e driver Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 166/279] i40e: Fix creation of first queue by omitting it if is not power of two Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 167/279] i40e: Fix display error code in dmesg Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 168/279] NFC: reorganize the functions in nci_request Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 169/279] NFC: reorder the logic in nfc_{un,}register_device Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 170/279] NFC: add NCI_UNREG flag to eliminate the race Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 171/279] e100: fix device suspend/resume Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 172/279] ptp: ocp: Fix a couple NULL vs IS_ERR() checks Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 173/279] perf bench: Fix two memory leaks detected with ASan Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 174/279] tools build: Fix removal of feature-sync-compare-and-swap feature detection Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 175/279] riscv: fix building external modules Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 176/279] KVM: PPC: Book3S HV: Use GLOBAL_TOC for kvmppc_h_set_dabr/xdabr() Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 177/279] powerpc: clean vdso32 and vdso64 directories Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 178/279] powerpc/pseries: rename numa_dist_table to form2_distances Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 179/279] powerpc/pseries: Fix numa FORM2 parsing fallback code Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 180/279] pinctrl: qcom: sdm845: Enable dual edge errata Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 181/279] pinctrl: qcom: sm8350: Correct UFS and SDC offsets Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 182/279] perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 183/279] perf/x86/intel/uncore: Fix IIO event constraints for " Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 184/279] perf/x86/intel/uncore: Fix IIO event constraints for Snowridge Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 185/279] s390/kexec: fix return code handling Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 186/279] blk-cgroup: fix missing put device in error path from blkg_conf_pref() Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 187/279] dmaengine: remove debugfs #ifdef Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 188/279] tun: fix bonding active backup with arp monitoring Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 189/279] Revert "mark pstore-blk as broken" Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 190/279] pstore/blk: Use "%lu" to format unsigned long Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 191/279] hexagon: export raw I/O routines for modules Greg Kroah-Hartman
2021-11-24 11:57 ` [PATCH 5.15 192/279] hexagon: clean up timer-regs.h Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 193/279] tipc: check for null after calling kmemdup Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 194/279] ipc: WARN if trying to remove ipc object which is absent Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 195/279] shm: extend forced shm destroy to support objects from several IPC nses Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 196/279] mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 197/279] hugetlb, userfaultfd: fix reservation restore on userfaultfd error Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 198/279] kmap_local: dont assume kmap PTEs are linear arrays in memory Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 199/279] mm/damon/dbgfs: use __GFP_NOWARN for user-specified size buffer allocation Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 200/279] mm/damon/dbgfs: fix missed use of damon_dbgfs_lock Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 201/279] x86/boot: Pull up cmdline preparation and early param parsing Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 202/279] x86/sgx: Fix free page accounting Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 203/279] x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup fails Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 204/279] KVM: x86: Assume a 64-bit hypercall for guests with protected state Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 205/279] KVM: x86: Fix uninitialized eoi_exit_bitmap usage in vcpu_load_eoi_exitmap() Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 206/279] KVM: x86/mmu: include EFER.LMA in extended mmu role Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 207/279] KVM: x86/xen: Fix get_attr of KVM_XEN_ATTR_TYPE_SHARED_INFO Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 208/279] powerpc/signal32: Fix sigset_t copy Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 209/279] powerpc/xive: Change IRQ domain to a tree domain Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 210/279] powerpc/8xx: Fix pinned TLBs with CONFIG_STRICT_KERNEL_RWX Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 211/279] Revert "drm/i915/tgl/dsi: Gate the ddi clocks after pll mapping" Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 212/279] Revert "parisc: Reduce sigreturn trampoline to 3 instructions" Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 213/279] ata: libata: improve ata_read_log_page() error message Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 214/279] ata: libata: add missing ata_identify_page_supported() calls Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 215/279] scsi: qla2xxx: Fix mailbox direction flags in qla2xxx_get_adapter_id() Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 216/279] pinctrl: ralink: include ralink_regs.h in pinctrl-mt7620.c Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 217/279] s390/setup: avoid reserving memory above identity mapping Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 218/279] s390/boot: simplify and fix kernel memory layout setup Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 219/279] s390/vdso: filter out -mstack-guard and -mstack-size Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 220/279] s390/kexec: fix memory leak of ipl report buffer Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 221/279] s390/dump: fix copying to user-space of swapped kdump oldmem Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 222/279] block: Check ADMIN before NICE for IOPRIO_CLASS_RT Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 223/279] fbdev: Prevent probing generic drivers if a FB is already registered Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 224/279] KVM: SEV: Disallow COPY_ENC_CONTEXT_FROM if target has created vCPUs Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 225/279] KVM: nVMX: dont use vcpu->arch.efer when checking host state on nested state load Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 226/279] drm/cma-helper: Release non-coherent memory with dma_free_noncoherent() Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 227/279] printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 228/279] udf: Fix crash after seekdir Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 229/279] spi: fix use-after-free of the add_lock mutex Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 230/279] net: stmmac: socfpga: add runtime suspend/resume callback for stratix10 platform Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 231/279] Drivers: hv: balloon: Use VMBUS_RING_SIZE() wrapper for dm_ring_size Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 232/279] btrfs: fix memory ordering between normal and ordered work functions Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 233/279] fs: handle circular mappings correctly Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 234/279] net: stmmac: Fix signed/unsigned wreckage Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 235/279] parisc/sticon: fix reverse colors Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 236/279] cfg80211: call cfg80211_stop_ap when switch from P2P_GO type Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 237/279] mac80211: fix radiotap header generation Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 238/279] mac80211: drop check for DONT_REORDER in __ieee80211_select_queue Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 239/279] drm/amd/display: Update swizzle mode enums Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 240/279] drm/amd/display: Limit max DSC target bpp for specific monitors Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 241/279] drm/i915/guc: Fix outstanding G2H accounting Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 242/279] drm/i915/guc: Dont enable scheduling on a banned context, guc_id invalid, not registered Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 243/279] drm/i915/guc: Workaround reset G2H is received after schedule done G2H Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 244/279] drm/i915/guc: Dont drop ce->guc_active.lock when unwinding context Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 245/279] drm/i915/guc: Unwind context requests in reverse order Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 246/279] drm/udl: fix control-message timeout Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 247/279] drm/prime: Fix use after free in mmap with drm_gem_ttm_mmap Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 248/279] drm/nouveau: Add a dedicated mutex for the clients list Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 249/279] drm/nouveau: use drm_dev_unplug() during device removal Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 250/279] drm/nouveau: clean up all clients on " Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 251/279] drm/i915/dp: Ensure sink rate values are always valid Greg Kroah-Hartman
2021-11-24 11:58 ` [PATCH 5.15 252/279] drm/i915/dp: Ensure max link params " Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 253/279] drm/i915: Fix type1 DVI DP dual mode adapter heuristic for modern platforms Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 254/279] drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga and dvi connectors Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 255/279] drm/amd/pm: avoid duplicate powergate/ungate setting Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 256/279] signal: Implement force_fatal_sig Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 257/279] exit/syscall_user_dispatch: Send ordinary signals on failure Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 258/279] signal/powerpc: On swapcontext failure force SIGSEGV Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 259/279] signal/s390: Use force_sigsegv in default_trap_handler Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 260/279] signal/sparc32: Exit with a fatal signal when try_to_clear_window_buffer fails Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 261/279] signal/sparc32: In setup_rt_frame and setup_fram use force_fatal_sig Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 262/279] signal/vm86_32: Properly send SIGSEGV when the vm86 state cannot be saved Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 263/279] signal/x86: In emulate_vsyscall force a signal instead of calling do_exit Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 264/279] signal: Replace force_sigsegv(SIGSEGV) with force_fatal_sig(SIGSEGV) Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 265/279] signal: Dont always set SA_IMMUTABLE for forced signals Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 266/279] signal: Replace force_fatal_sig with force_exit_sig when in doubt Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 267/279] hugetlbfs: flush TLBs correctly after huge_pmd_unshare Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 268/279] RDMA/netlink: Add __maybe_unused to static inline in C file Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 269/279] bpf: Forbid bpf_ktime_get_coarse_ns and bpf_timer_* in tracing progs Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 270/279] selinux: fix NULL-pointer dereference when hashtab allocation fails Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 271/279] ASoC: DAPM: Cover regression by kctl change notification fix Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 272/279] ASoC: rsnd: fixup DMAEngine API Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 273/279] usb: max-3421: Use driver data instead of maintaining a list of bound devices Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 274/279] ice: Fix VF true promiscuous mode Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 275/279] ice: Delete always true check of PF pointer Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 276/279] fs: export an inode_update_time helper Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 277/279] btrfs: update device path inode time instead of bd_inode Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 278/279] net: add and use skb_unclone_keeptruesize() helper Greg Kroah-Hartman
2021-11-24 11:59 ` [PATCH 5.15 279/279] x86/Kconfig: Fix an unused variable error in dell-smm-hwmon Greg Kroah-Hartman
2021-11-24 19:30 ` [PATCH 5.15 000/279] 5.15.5-rc1 review Fox Chen
2021-11-25  1:45 ` Guenter Roeck
2021-11-25  6:18 ` Naresh Kamboju
2021-11-25  7:55 ` Rudi Heitbaum
2021-11-25 11:19 ` Jon Hunter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211124115718.887480462@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maxime@cerno.tech \
    --cc=samuel@sholland.org \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).