diff options
Diffstat (limited to 'drivers/firmware/dmi-sysfs.c')
| -rw-r--r-- | drivers/firmware/dmi-sysfs.c | 17 | 
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/firmware/dmi-sysfs.c b/drivers/firmware/dmi-sysfs.c index e0f1cb3d3598..ef76e5eecf0b 100644 --- a/drivers/firmware/dmi-sysfs.c +++ b/drivers/firmware/dmi-sysfs.c @@ -566,7 +566,6 @@ static struct kobj_type dmi_sysfs_entry_ktype = {  	.default_attrs = dmi_sysfs_entry_attrs,  }; -static struct kobject *dmi_kobj;  static struct kset *dmi_kset;  /* Global count of all instances seen.  Only for setup */ @@ -648,17 +647,20 @@ static void cleanup_entry_list(void)  static int __init dmi_sysfs_init(void)  { -	int error = -ENOMEM; +	int error;  	int val; -	/* Set up our directory */ -	dmi_kobj = kobject_create_and_add("dmi", firmware_kobj); -	if (!dmi_kobj) +	if (!dmi_kobj) { +		pr_err("dmi-sysfs: dmi entry is absent.\n"); +		error = -ENODATA;  		goto err; +	}  	dmi_kset = kset_create_and_add("entries", NULL, dmi_kobj); -	if (!dmi_kset) +	if (!dmi_kset) { +		error = -ENOMEM;  		goto err; +	}  	val = 0;  	error = dmi_walk(dmi_sysfs_register_handle, &val); @@ -675,7 +677,6 @@ static int __init dmi_sysfs_init(void)  err:  	cleanup_entry_list();  	kset_unregister(dmi_kset); -	kobject_put(dmi_kobj);  	return error;  } @@ -685,8 +686,6 @@ static void __exit dmi_sysfs_exit(void)  	pr_debug("dmi-sysfs: unloading.\n");  	cleanup_entry_list();  	kset_unregister(dmi_kset); -	kobject_del(dmi_kobj); -	kobject_put(dmi_kobj);  }  module_init(dmi_sysfs_init);  |