Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

efivars: handle errors from register_efivars()

We should unwind and return an error if register_efivars() fails.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Acked-by: Mike Waychison <mikew@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by

Dan Carpenter and committed by
Greg Kroah-Hartman
3116aabc 051d51bc

+9 -2
+9 -2
drivers/firmware/efivars.c
··· 803 803 ops.set_variable = efi.set_variable; 804 804 ops.get_next_variable = efi.get_next_variable; 805 805 error = register_efivars(&__efivars, &ops, efi_kobj); 806 + if (error) 807 + goto err_put; 806 808 807 809 /* Don't forget the systab entry */ 808 810 error = sysfs_create_group(efi_kobj, &efi_subsys_attr_group); ··· 812 810 printk(KERN_ERR 813 811 "efivars: Sysfs attribute export failed with error %d.\n", 814 812 error); 815 - unregister_efivars(&__efivars); 816 - kobject_put(efi_kobj); 813 + goto err_unregister; 817 814 } 818 815 816 + return 0; 817 + 818 + err_unregister: 819 + unregister_efivars(&__efivars); 820 + err_put: 821 + kobject_put(efi_kobj); 819 822 return error; 820 823 } 821 824