summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2025-11-26 15:53:26 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-01-30 10:32:24 +0100
commit6602bb4d1338e92b5838e50322b87697bdbd2ee0 (patch)
treecd9f8afe90c66ca619fe0e357ba5e8200e28b58a
parent5f13c946ca449fb4991f42fa87706643ca83d1a7 (diff)
downloadlinux-6602bb4d1338e92b5838e50322b87697bdbd2ee0.tar.gz
linux-6602bb4d1338e92b5838e50322b87697bdbd2ee0.tar.bz2
linux-6602bb4d1338e92b5838e50322b87697bdbd2ee0.zip
slimbus: core: fix device reference leak on report present
commit 9391380eb91ea5ac792aae9273535c8da5b9aa01 upstream. Slimbus devices can be allocated dynamically upon reception of report-present messages. Make sure to drop the reference taken when looking up already registered devices. Note that this requires taking an extra reference in case the device has not yet been registered and has to be allocated. Fixes: 46a2bb5a7f7e ("slimbus: core: Add slim controllers support") Cc: stable@vger.kernel.org # 4.16 Signed-off-by: Johan Hovold <johan@kernel.org> Link: https://patch.msgid.link/20251126145329.5022-4-johan@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/slimbus/core.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/slimbus/core.c b/drivers/slimbus/core.c
index 617aac175118..0992ca35cef4 100644
--- a/drivers/slimbus/core.c
+++ b/drivers/slimbus/core.c
@@ -379,6 +379,8 @@ struct slim_device *slim_get_device(struct slim_controller *ctrl,
sbdev = slim_alloc_device(ctrl, e_addr, NULL);
if (!sbdev)
return ERR_PTR(-ENOMEM);
+
+ get_device(&sbdev->dev);
}
return sbdev;
@@ -505,6 +507,7 @@ int slim_device_report_present(struct slim_controller *ctrl,
ret = slim_device_alloc_laddr(sbdev, true);
}
+ put_device(&sbdev->dev);
out_put_rpm:
pm_runtime_mark_last_busy(ctrl->dev);
pm_runtime_put_autosuspend(ctrl->dev);