Skip to content

Commit

Permalink
platform/x86: dell-wmi-sysman: fix init_bios_attributes() error handling
Browse files Browse the repository at this point in the history
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: e8a60aa ("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>
  • Loading branch information
Dan Carpenter authored and Hans de Goede committed Nov 9, 2020
1 parent 274335f commit 20f6790
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions drivers/platform/x86/dell-wmi-sysman/sysman.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -486,13 +488,13 @@ static int init_bios_attributes(int attr_type, const char *guid)
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;
}

Expand Down

0 comments on commit 20f6790

Please sign in to comment.