* [PATCH v3] gpu: host1x: Fix device reference leak in host1x_device_parse_dt() error path
@ 2026-04-13 14:15 Guangshuo Li
2026-04-20 5:51 ` Mikko Perttunen
0 siblings, 1 reply; 2+ messages in thread
From: Guangshuo Li @ 2026-04-13 14:15 UTC (permalink / raw)
To: Thierry Reding, Mikko Perttunen, David Airlie, Simona Vetter,
Mark Zhang, Sean Paul, dri-devel, linux-tegra, linux-kernel
Cc: Guangshuo Li, stable
After device_initialize(), the embedded struct device in struct
host1x_device should be released through the device core with
put_device().
In host1x_device_add(), if host1x_device_parse_dt() fails, the current
error path frees the object directly with kfree(device). That bypasses
the normal device lifetime handling and leaks the reference held on the
embedded struct device.
The issue was identified by a static analysis tool I developed and
confirmed by manual review.
Fix this by using put_device() in the host1x_device_parse_dt() failure
path.
Fixes: f4c5cf88fbd50 ("gpu: host1x: Provide a proper struct bus_type")
Cc: stable@vger.kernel.org
Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
---
v3:
- note that the issue was identified by my static analysis tool
- and confirmed by manual review
v2:
- add Cc: stable@vger.kernel.org
drivers/gpu/host1x/bus.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c
index 63fe037c3b65..e3ac85848aec 100644
--- a/drivers/gpu/host1x/bus.c
+++ b/drivers/gpu/host1x/bus.c
@@ -452,7 +452,7 @@ static int host1x_device_add(struct host1x *host1x,
err = host1x_device_parse_dt(device, driver);
if (err < 0) {
- kfree(device);
+ put_device(&device->dev);
return err;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v3] gpu: host1x: Fix device reference leak in host1x_device_parse_dt() error path
2026-04-13 14:15 [PATCH v3] gpu: host1x: Fix device reference leak in host1x_device_parse_dt() error path Guangshuo Li
@ 2026-04-20 5:51 ` Mikko Perttunen
0 siblings, 0 replies; 2+ messages in thread
From: Mikko Perttunen @ 2026-04-20 5:51 UTC (permalink / raw)
To: Thierry Reding, David Airlie, Simona Vetter, Mark Zhang,
Sean Paul, dri-devel, linux-tegra, linux-kernel, Guangshuo Li
Cc: Guangshuo Li, stable
On Monday, April 13, 2026 11:15 PM Guangshuo Li wrote:
> After device_initialize(), the embedded struct device in struct
> host1x_device should be released through the device core with
> put_device().
>
> In host1x_device_add(), if host1x_device_parse_dt() fails, the current
> error path frees the object directly with kfree(device). That bypasses
> the normal device lifetime handling and leaks the reference held on the
> embedded struct device.
>
> The issue was identified by a static analysis tool I developed and
> confirmed by manual review.
>
> Fix this by using put_device() in the host1x_device_parse_dt() failure
> path.
>
> Fixes: f4c5cf88fbd50 ("gpu: host1x: Provide a proper struct bus_type")
> Cc: stable@vger.kernel.org
> Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
> ---
> v3:
> - note that the issue was identified by my static analysis tool
> - and confirmed by manual review
>
> v2:
> - add Cc: stable@vger.kernel.org
>
> drivers/gpu/host1x/bus.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c
> index 63fe037c3b65..e3ac85848aec 100644
> --- a/drivers/gpu/host1x/bus.c
> +++ b/drivers/gpu/host1x/bus.c
> @@ -452,7 +452,7 @@ static int host1x_device_add(struct host1x *host1x,
>
> err = host1x_device_parse_dt(device, driver);
> if (err < 0) {
> - kfree(device);
> + put_device(&device->dev);
> return err;
> }
>
> --
> 2.43.0
>
>
Thanks!
Acked-by: Mikko Perttunen <mperttunen@nvidia.com>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-04-20 5:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-13 14:15 [PATCH v3] gpu: host1x: Fix device reference leak in host1x_device_parse_dt() error path Guangshuo Li
2026-04-20 5:51 ` Mikko Perttunen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox