On Mon, 19 Dec 2022 at 10:10, Johan Hovold <johan+linaro@xxxxxxxxxx> wrote: > > In case runtime services are not supported or have been disabled the > runtime services workqueue will never have been allocated. > > Do not try to destroy the workqueue unconditionally in the unlikely > event that EFI initialisation fails to avoid dereferencing a NULL > pointer. > > Fixes: 98086df8b70c ("efi: add missed destroy_workqueue when efisubsys_init fails") > Cc: stable@xxxxxxxxxxxxxxx > Cc: Li Heng <liheng40@xxxxxxxxxx> > Signed-off-by: Johan Hovold <johan+linaro@xxxxxxxxxx> Thanks for the fix - I will queue it up after -rc1 > --- > drivers/firmware/efi/efi.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c > index 09716eebe8ac..a2b0cbc8741c 100644 > --- a/drivers/firmware/efi/efi.c > +++ b/drivers/firmware/efi/efi.c > @@ -394,8 +394,8 @@ static int __init efisubsys_init(void) > efi_kobj = kobject_create_and_add("efi", firmware_kobj); > if (!efi_kobj) { > pr_err("efi: Firmware registration failed.\n"); > - destroy_workqueue(efi_rts_wq); > - return -ENOMEM; > + error = -ENOMEM; > + goto err_destroy_wq; > } > > if (efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE | > @@ -443,7 +443,10 @@ static int __init efisubsys_init(void) > err_put: > kobject_put(efi_kobj); > efi_kobj = NULL; > - destroy_workqueue(efi_rts_wq); > +err_destroy_wq: > + if (efi_rts_wq) > + destroy_workqueue(efi_rts_wq); > + > return error; > } > > -- > 2.37.4 >