summaryrefslogtreecommitdiffstats
path: root/drivers/firmware/google/vpd.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2017-05-24 02:07:44 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-05-25 15:37:16 +0200
commit2ee1cc70552e5520a275254427c0c37fc81728d2 (patch)
treeec52f22a5a86985220b05afd12cb0701d31cd3ce /drivers/firmware/google/vpd.c
parentfirmware: vpd: avoid potential use-after-free when destroying section (diff)
downloadlinux-2ee1cc70552e5520a275254427c0c37fc81728d2.tar.xz
linux-2ee1cc70552e5520a275254427c0c37fc81728d2.zip
firmware: vpd: do not leak kobjects
kobject_del() only unlinks kobject, we need to use kobject_put() to make sure kobject will go away completely. Fixes: 049a59db34eb ("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>
Diffstat (limited to 'drivers/firmware/google/vpd.c')
-rw-r--r--drivers/firmware/google/vpd.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/firmware/google/vpd.c b/drivers/firmware/google/vpd.c
index db49c6f98153..31058d400bda 100644
--- a/drivers/firmware/google/vpd.c
+++ b/drivers/firmware/google/vpd.c
@@ -244,7 +244,7 @@ static int vpd_section_destroy(struct vpd_section *sec)
{
if (sec->enabled) {
vpd_section_attrib_destroy(sec);
- kobject_del(sec->kobj);
+ kobject_put(sec->kobj);
sysfs_remove_bin_file(vpd_kobj, &sec->bin_attr);
kfree(sec->raw_name);
iounmap(sec->baseaddr);
@@ -331,7 +331,7 @@ static void __exit vpd_platform_exit(void)
{
vpd_section_destroy(&ro_vpd);
vpd_section_destroy(&rw_vpd);
- kobject_del(vpd_kobj);
+ kobject_put(vpd_kobj);
}
module_init(vpd_platform_init);