diff options
author | Johan Hovold <[email protected]> | 2022-03-03 19:05:19 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <[email protected]> | 2022-03-18 14:13:15 +0100 |
commit | 202c08914ba50dd324e42d5ad99535a89f242560 (patch) | |
tree | 10f54efa3999327e4875a9b6bc82203ec4674bfe | |
parent | b850b7a8b369322adf699ef48ceff4d902525c8c (diff) |
firmware: sysfb: fix platform-device leak in error path
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: [email protected] # 5.14
Cc: Miaoqian Lin <[email protected]>
Cc: Javier Martinez Canillas <[email protected]>
Signed-off-by: Johan Hovold <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
-rw-r--r-- | drivers/firmware/sysfb_simplefb.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/firmware/sysfb_simplefb.c b/drivers/firmware/sysfb_simplefb.c index 303a491e520d..757cc8b9f3de 100644 --- a/drivers/firmware/sysfb_simplefb.c +++ b/drivers/firmware/sysfb_simplefb.c @@ -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; } |