|
@@ -136,12 +136,12 @@ static int vpd_section_attrib_add(const u8 *key, s32 key_len,
|
|
|
info->value = value;
|
|
|
|
|
|
INIT_LIST_HEAD(&info->list);
|
|
|
- list_add_tail(&info->list, &sec->attribs);
|
|
|
|
|
|
ret = sysfs_create_bin_file(sec->kobj, &info->bin_attr);
|
|
|
if (ret)
|
|
|
goto free_info_key;
|
|
|
|
|
|
+ list_add_tail(&info->list, &sec->attribs);
|
|
|
return 0;
|
|
|
|
|
|
free_info_key:
|
|
@@ -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);
|
|
|
}
|
|
|
}
|
|
@@ -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);
|