platform/x86: dell-wmi-sysman: fix init_bios_attributes() error handling
Calling release_attributes_data() while holding the "wmi_priv.mutex"
will lead to a dead lock. The other problem is that if kzalloc() fails
then this should return -ENOMEM but currently it returns success.
Fixes: e8a60aa740
("platform/x86: Introduce support for Systems Management Driver over WMI for Dell Systems")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/20201103101735.GB1127762@mwanda
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
274335f1c5
commit
20f6790282
|
@ -443,8 +443,10 @@ static int init_bios_attributes(int attr_type, const char *guid)
|
|||
|
||||
/* build attribute */
|
||||
attr_name_kobj = kzalloc(sizeof(*attr_name_kobj), GFP_KERNEL);
|
||||
if (!attr_name_kobj)
|
||||
if (!attr_name_kobj) {
|
||||
retval = -ENOMEM;
|
||||
goto err_attr_init;
|
||||
}
|
||||
|
||||
attr_name_kobj->kset = tmp_set;
|
||||
|
||||
|
@ -486,13 +488,13 @@ nextobj:
|
|||
elements = obj ? obj->package.elements : NULL;
|
||||
}
|
||||
|
||||
goto out;
|
||||
mutex_unlock(&wmi_priv.mutex);
|
||||
return 0;
|
||||
|
||||
err_attr_init:
|
||||
mutex_unlock(&wmi_priv.mutex);
|
||||
release_attributes_data();
|
||||
kfree(obj);
|
||||
out:
|
||||
mutex_unlock(&wmi_priv.mutex);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue