efi/efivars: Add missing kobject_put() in sysfs entry creation error path
authorArd Biesheuvel <ardb@kernel.org>
Fri, 22 May 2020 16:15:49 +0000 (18:15 +0200)
committerArd Biesheuvel <ardb@kernel.org>
Fri, 22 May 2020 16:19:06 +0000 (18:19 +0200)
The documentation provided by kobject_init_and_add() clearly spells out
the need to call kobject_put() on the kobject if an error is returned.
Add this missing call to the error path.

Cc: <stable@vger.kernel.org>
Reported-by: 亿一 <teroincn@gmail.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/efivars.c

index 78ad1ba..26528a4 100644 (file)
@@ -522,8 +522,10 @@ efivar_create_sysfs_entry(struct efivar_entry *new_var)
        ret = kobject_init_and_add(&new_var->kobj, &efivar_ktype,
                                   NULL, "%s", short_name);
        kfree(short_name);
-       if (ret)
+       if (ret) {
+               kobject_put(&new_var->kobj);
                return ret;
+       }
 
        kobject_uevent(&new_var->kobj, KOBJ_ADD);
        if (efivar_entry_add(new_var, &efivar_sysfs_list)) {