* [PATCH] drm/bochs: Drop manual put on probe error path
@ 2026-04-24 12:34 Myeonghun Pak
2026-04-24 13:25 ` Thomas Zimmermann
2026-05-07 8:44 ` Thomas Zimmermann
0 siblings, 2 replies; 7+ messages in thread
From: Myeonghun Pak @ 2026-04-24 12:34 UTC (permalink / raw)
To: Gerd Hoffmann, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: Myeonghun Pak, virtualization, dri-devel, linux-kernel
bochs_pci_probe() allocates the DRM device with devm_drm_dev_alloc(),
which registers a devres action to drop the initial DRM device reference
on driver detach or probe failure.
The error path currently calls drm_dev_put() manually. If probe then
returns an error, devres will run the registered release action and put
the same device again, after the first put may already have released it.
Return the probe error directly and let devres own the final put.
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
---
drivers/gpu/drm/tiny/bochs.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
index 222e4ae1ab..5d8dc5efec 100644
--- a/drivers/gpu/drm/tiny/bochs.c
+++ b/drivers/gpu/drm/tiny/bochs.c
@@ -761,25 +761,21 @@ static int bochs_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent
ret = pcim_enable_device(pdev);
if (ret)
- goto err_free_dev;
+ return ret;
pci_set_drvdata(pdev, dev);
ret = bochs_load(bochs);
if (ret)
- goto err_free_dev;
+ return ret;
ret = drm_dev_register(dev, 0);
if (ret)
- goto err_free_dev;
+ return ret;
drm_client_setup(dev, NULL);
return ret;
-
-err_free_dev:
- drm_dev_put(dev);
- return ret;
}
static void bochs_pci_remove(struct pci_dev *pdev)
--
2.39.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] drm/bochs: Drop manual put on probe error path
2026-04-24 12:34 [PATCH] drm/bochs: Drop manual put on probe error path Myeonghun Pak
@ 2026-04-24 13:25 ` Thomas Zimmermann
[not found] ` <CAGEsz8FrkbQEWZbxV3Q0NkSxhQka575uemKMQtTJQaCm44ByxQ@mail.gmail.com>
2026-05-07 8:44 ` Thomas Zimmermann
1 sibling, 1 reply; 7+ messages in thread
From: Thomas Zimmermann @ 2026-04-24 13:25 UTC (permalink / raw)
To: Myeonghun Pak, Gerd Hoffmann, Maarten Lankhorst, Maxime Ripard,
David Airlie, Simona Vetter
Cc: virtualization, dri-devel, linux-kernel
Hi,
please add fixes tags to all these patches you're sending. You also need
to CC stable so that they can be backported easily. Also list the AI
you're using to find and create these patches.
Best regards
Thomas
Am 24.04.26 um 14:34 schrieb Myeonghun Pak:
> bochs_pci_probe() allocates the DRM device with devm_drm_dev_alloc(),
> which registers a devres action to drop the initial DRM device reference
> on driver detach or probe failure.
>
> The error path currently calls drm_dev_put() manually. If probe then
> returns an error, devres will run the registered release action and put
> the same device again, after the first put may already have released it.
>
> Return the probe error directly and let devres own the final put.
>
> Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
> ---
> drivers/gpu/drm/tiny/bochs.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
> index 222e4ae1ab..5d8dc5efec 100644
> --- a/drivers/gpu/drm/tiny/bochs.c
> +++ b/drivers/gpu/drm/tiny/bochs.c
> @@ -761,25 +761,21 @@ static int bochs_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent
>
> ret = pcim_enable_device(pdev);
> if (ret)
> - goto err_free_dev;
> + return ret;
>
> pci_set_drvdata(pdev, dev);
>
> ret = bochs_load(bochs);
> if (ret)
> - goto err_free_dev;
> + return ret;
>
> ret = drm_dev_register(dev, 0);
> if (ret)
> - goto err_free_dev;
> + return ret;
>
> drm_client_setup(dev, NULL);
>
> return ret;
> -
> -err_free_dev:
> - drm_dev_put(dev);
> - return ret;
> }
>
> static void bochs_pci_remove(struct pci_dev *pdev)
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] drm/bochs: Drop manual put on probe error path
2026-04-24 12:34 [PATCH] drm/bochs: Drop manual put on probe error path Myeonghun Pak
2026-04-24 13:25 ` Thomas Zimmermann
@ 2026-05-07 8:44 ` Thomas Zimmermann
2026-05-08 7:43 ` Markus Elfring
1 sibling, 1 reply; 7+ messages in thread
From: Thomas Zimmermann @ 2026-05-07 8:44 UTC (permalink / raw)
To: Myeonghun Pak, Gerd Hoffmann, Maarten Lankhorst, Maxime Ripard,
David Airlie, Simona Vetter
Cc: virtualization, dri-devel, linux-kernel
Am 24.04.26 um 14:34 schrieb Myeonghun Pak:
> bochs_pci_probe() allocates the DRM device with devm_drm_dev_alloc(),
> which registers a devres action to drop the initial DRM device reference
> on driver detach or probe failure.
>
> The error path currently calls drm_dev_put() manually. If probe then
> returns an error, devres will run the registered release action and put
> the same device again, after the first put may already have released it.
>
> Return the probe error directly and let devres own the final put.
>
> Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
Fixes: 04826f588682 ("drm/bochs: Allocate DRM device in struct
bochs_device")
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux.dev
Cc: <stable@vger.kernel.org> # v6.13+
> ---
> drivers/gpu/drm/tiny/bochs.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
> index 222e4ae1ab..5d8dc5efec 100644
> --- a/drivers/gpu/drm/tiny/bochs.c
> +++ b/drivers/gpu/drm/tiny/bochs.c
> @@ -761,25 +761,21 @@ static int bochs_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent
>
> ret = pcim_enable_device(pdev);
> if (ret)
> - goto err_free_dev;
> + return ret;
>
> pci_set_drvdata(pdev, dev);
>
> ret = bochs_load(bochs);
> if (ret)
> - goto err_free_dev;
> + return ret;
>
> ret = drm_dev_register(dev, 0);
> if (ret)
> - goto err_free_dev;
> + return ret;
>
> drm_client_setup(dev, NULL);
>
> return ret;
> -
> -err_free_dev:
> - drm_dev_put(dev);
> - return ret;
> }
>
> static void bochs_pci_remove(struct pci_dev *pdev)
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: drm/bochs: Drop manual put on probe error path
2026-05-07 8:44 ` Thomas Zimmermann
@ 2026-05-08 7:43 ` Markus Elfring
0 siblings, 0 replies; 7+ messages in thread
From: Markus Elfring @ 2026-05-08 7:43 UTC (permalink / raw)
To: Thomas Zimmermann, Myeonghun Pak, dri-devel, virtualization,
David Airlie, Gerd Hoffmann, Maarten Lankhorst, Maxime Ripard,
Simona Vetter
Cc: LKML
…
> > Return the probe error directly and let devres own the final put.
…
> Fixes: 04826f588682 ("drm/bochs: Allocate DRM device in struct
> bochs_device")
…
See also once more:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v7.1-rc2#n145
Regards,
Markus
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] drm/bochs: Drop manual put on probe error path
@ 2026-04-24 13:54 Myeonghun Pak
0 siblings, 0 replies; 7+ messages in thread
From: Myeonghun Pak @ 2026-04-24 13:54 UTC (permalink / raw)
To: Gerd Hoffmann, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: Myeonghun Pak, virtualization, dri-devel, stable, linux-kernel
bochs_pci_probe() allocates the DRM device with devm_drm_dev_alloc(),
which registers a devres action to drop the initial DRM device reference
on driver detach or probe failure.
The error path currently calls drm_dev_put() manually. If probe then
returns an error, devres will run the registered release action and put
the same device again, after the first put may already have released it.
Return the probe error directly and let devres own the final put.
Fixes: 04826f588682 ("drm/bochs: Allocate DRM device in struct bochs_device")
Cc: stable@vger.kernel.org
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
---
drivers/gpu/drm/tiny/bochs.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
index 222e4ae1ab..5d8dc5efec 100644
--- a/drivers/gpu/drm/tiny/bochs.c
+++ b/drivers/gpu/drm/tiny/bochs.c
@@ -761,25 +761,21 @@ static int bochs_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent
ret = pcim_enable_device(pdev);
if (ret)
- goto err_free_dev;
+ return ret;
pci_set_drvdata(pdev, dev);
ret = bochs_load(bochs);
if (ret)
- goto err_free_dev;
+ return ret;
ret = drm_dev_register(dev, 0);
if (ret)
- goto err_free_dev;
+ return ret;
drm_client_setup(dev, NULL);
return ret;
-
-err_free_dev:
- drm_dev_put(dev);
- return ret;
}
static void bochs_pci_remove(struct pci_dev *pdev)
--
2.39.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-08 7:43 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-24 12:34 [PATCH] drm/bochs: Drop manual put on probe error path Myeonghun Pak
2026-04-24 13:25 ` Thomas Zimmermann
[not found] ` <CAGEsz8FrkbQEWZbxV3Q0NkSxhQka575uemKMQtTJQaCm44ByxQ@mail.gmail.com>
2026-04-24 14:59 ` Thomas Zimmermann
[not found] ` <CAGEsz8F54LaiJYGD6i-nW7hDiLTu6FOi4Z8fzb8b4=+9-OEH+Q@mail.gmail.com>
2026-05-04 8:36 ` Thomas Zimmermann
2026-05-07 8:44 ` Thomas Zimmermann
2026-05-08 7:43 ` Markus Elfring
-- strict thread matches above, loose matches on Subject: below --
2026-04-24 13:54 [PATCH] " Myeonghun Pak
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox