]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
firmware: sysfb: fix platform-device leak in error path
authorJohan Hovold <johan@kernel.org>
Thu, 3 Mar 2022 18:05:19 +0000 (19:05 +0100)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 20 May 2022 12:37:26 +0000 (14:37 +0200)
BugLink: https://bugs.launchpad.net/bugs/1969110
commit 202c08914ba50dd324e42d5ad99535a89f242560 upstream.

Make sure to free the platform device also in the unlikely event that
registration fails.

Fixes: 0589e8889dce ("drivers/firmware: Add missing platform_device_put() in sysfb_create_simplefb")
Fixes: 8633ef82f101 ("drivers/firmware: consolidate EFI framebuffer setup for all arches")
Cc: stable@vger.kernel.org # 5.14
Cc: Miaoqian Lin <linmq006@gmail.com>
Cc: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://lore.kernel.org/r/20220303180519.3117-1-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit b3e38f939ab4d0d86f56bff3362c3f88c4b2ad32)
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
drivers/firmware/sysfb_simplefb.c

index 303a491e520d1d4839df7c41589b4763b55557f8..757cc8b9f3de91ed8120344b738b4407aef3f33d 100644 (file)
@@ -113,16 +113,21 @@ __init int sysfb_create_simplefb(const struct screen_info *si,
        sysfb_apply_efi_quirks(pd);
 
        ret = platform_device_add_resources(pd, &res, 1);
-       if (ret) {
-               platform_device_put(pd);
-               return ret;
-       }
+       if (ret)
+               goto err_put_device;
 
        ret = platform_device_add_data(pd, mode, sizeof(*mode));
-       if (ret) {
-               platform_device_put(pd);
-               return ret;
-       }
+       if (ret)
+               goto err_put_device;
+
+       ret = platform_device_add(pd);
+       if (ret)
+               goto err_put_device;
+
+       return 0;
+
+err_put_device:
+       platform_device_put(pd);
 
-       return platform_device_add(pd);
+       return ret;
 }