[PATCH] virtio-mmio: fix missing put_device() when vm_cmdline_parent registration failed

chengkaitao posted 1 patch 3 years, 11 months ago
drivers/virtio/virtio_mmio.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] virtio-mmio: fix missing put_device() when vm_cmdline_parent registration failed
Posted by chengkaitao 3 years, 11 months ago
From: chengkaitao <pilgrimtao@gmail.com>

The reference must be released when device_register(&vm_cmdline_parent)
failed. Add the corresponding 'put_device()' in the error handling path.

Signed-off-by: chengkaitao <pilgrimtao@gmail.com>
---
 drivers/virtio/virtio_mmio.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index 56128b9c46eb..1dd396d4bebb 100644
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -688,6 +688,7 @@ static int vm_cmdline_set(const char *device,
 	if (!vm_cmdline_parent_registered) {
 		err = device_register(&vm_cmdline_parent);
 		if (err) {
+			put_device(&vm_cmdline_parent);
 			pr_err("Failed to register parent device!\n");
 			return err;
 		}
-- 
2.14.1
Re: [PATCH] virtio-mmio: fix missing put_device() when vm_cmdline_parent registration failed
Posted by Jason Wang 3 years, 10 months ago
On Thu, Jun 2, 2022 at 9:12 AM chengkaitao <pilgrimtao@gmail.com> wrote:
>
> From: chengkaitao <pilgrimtao@gmail.com>
>
> The reference must be released when device_register(&vm_cmdline_parent)
> failed. Add the corresponding 'put_device()' in the error handling path.
>
> Signed-off-by: chengkaitao <pilgrimtao@gmail.com>

Acked-by: Jason Wang <jasowang@redhat.com>

> ---
>  drivers/virtio/virtio_mmio.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
> index 56128b9c46eb..1dd396d4bebb 100644
> --- a/drivers/virtio/virtio_mmio.c
> +++ b/drivers/virtio/virtio_mmio.c
> @@ -688,6 +688,7 @@ static int vm_cmdline_set(const char *device,
>         if (!vm_cmdline_parent_registered) {
>                 err = device_register(&vm_cmdline_parent);
>                 if (err) {
> +                       put_device(&vm_cmdline_parent);
>                         pr_err("Failed to register parent device!\n");
>                         return err;
>                 }
> --
> 2.14.1
>