]> git.baikalelectronics.ru Git - kernel.git/commitdiff
firmware: vpd: avoid potential use-after-free when destroying section
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 24 May 2017 00:07:43 +0000 (17:07 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 May 2017 13:37:16 +0000 (15:37 +0200)
We should not free info->key before we remove sysfs attribute that uses
this data as its name.

Fixes: cd796c7e3fb1 ("firmware: Google VPD sysfs driver")
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Guenter Roeck <groeck@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/firmware/google/vpd.c

index 23a24a6d02c26025a4910053a22fc3b4ae7ba25a..db49c6f98153e321aac4beec468ef32735e2d90b 100644 (file)
@@ -158,8 +158,8 @@ static void vpd_section_attrib_destroy(struct vpd_section *sec)
        struct vpd_attrib_info *temp;
 
        list_for_each_entry_safe(info, temp, &sec->attribs, list) {
-               kfree(info->key);
                sysfs_remove_bin_file(sec->kobj, &info->bin_attr);
+               kfree(info->key);
                kfree(info);
        }
 }