Make sure to drop the references taken when looking up the backend devices during vendor module unload.
Fixes: bfc653aa89cb ("perf: arm_cspmu: Separate Arm and vendor module") Cc: stable@vger.kernel.org # 6.7 Cc: Besar Wicaksono bwicaksono@nvidia.com Signed-off-by: Johan Hovold johan@kernel.org --- drivers/perf/arm_cspmu/arm_cspmu.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c index efa9b229e701..e0d4293f06f9 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.c +++ b/drivers/perf/arm_cspmu/arm_cspmu.c @@ -1365,8 +1365,10 @@ void arm_cspmu_impl_unregister(const struct arm_cspmu_impl_match *impl_match)
/* Unbind the driver from all matching backend devices. */ while ((dev = driver_find_device(&arm_cspmu_driver.driver, NULL, - match, arm_cspmu_match_device))) + match, arm_cspmu_match_device))) { device_release_driver(dev); + put_device(dev); + }
mutex_lock(&arm_cspmu_lock);
On Fri, Nov 21, 2025 at 12:52:13PM +0100, Johan Hovold wrote:
Make sure to drop the references taken when looking up the backend devices during vendor module unload.
Fixes: bfc653aa89cb ("perf: arm_cspmu: Separate Arm and vendor module") Cc: stable@vger.kernel.org # 6.7 Cc: Besar Wicaksono bwicaksono@nvidia.com Signed-off-by: Johan Hovold johan@kernel.org
drivers/perf/arm_cspmu/arm_cspmu.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c index efa9b229e701..e0d4293f06f9 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.c +++ b/drivers/perf/arm_cspmu/arm_cspmu.c @@ -1365,8 +1365,10 @@ void arm_cspmu_impl_unregister(const struct arm_cspmu_impl_match *impl_match) /* Unbind the driver from all matching backend devices. */ while ((dev = driver_find_device(&arm_cspmu_driver.driver, NULL,
match, arm_cspmu_match_device)))
device_release_driver(dev);match, arm_cspmu_match_device))) {put_device(dev);- }
There's already a fix queued for this; please take a look:
https://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git/commit/?h=for...
Wil
On Mon, Nov 24, 2025 at 04:03:29PM +0000, Will Deacon wrote:
On Fri, Nov 21, 2025 at 12:52:13PM +0100, Johan Hovold wrote:
Make sure to drop the references taken when looking up the backend devices during vendor module unload.
Fixes: bfc653aa89cb ("perf: arm_cspmu: Separate Arm and vendor module") Cc: stable@vger.kernel.org # 6.7 Cc: Besar Wicaksono bwicaksono@nvidia.com Signed-off-by: Johan Hovold johan@kernel.org
drivers/perf/arm_cspmu/arm_cspmu.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c index efa9b229e701..e0d4293f06f9 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.c +++ b/drivers/perf/arm_cspmu/arm_cspmu.c @@ -1365,8 +1365,10 @@ void arm_cspmu_impl_unregister(const struct arm_cspmu_impl_match *impl_match) /* Unbind the driver from all matching backend devices. */ while ((dev = driver_find_device(&arm_cspmu_driver.driver, NULL,
match, arm_cspmu_match_device)))
device_release_driver(dev);match, arm_cspmu_match_device))) {put_device(dev);- }
There's already a fix queued for this; please take a look:
https://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git/commit/?h=for...
Ah, forgot to check linux-next here, sorry.
The diff of that commit is identical even if the commit summary is a bit misleading as this is not an error path.
Johan
linux-stable-mirror@lists.linaro.org