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: 0589e8889d ("drivers/firmware: Add missing platform_device_put() in sysfb_create_simplefb")
Fixes: 8633ef82f1 ("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>
This commit is contained in:
Johan Hovold 2022-03-03 19:05:19 +01:00 committed by Greg Kroah-Hartman
parent b850b7a8b3
commit 202c08914b

View 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;
return platform_device_add(pd);
ret = platform_device_add(pd);
if (ret)
goto err_put_device;
return 0;
err_put_device:
platform_device_put(pd);
return ret;
}