forked from Minki/linux
platform/x86: dell-smbios-wmi: release mutex lock on WMI call failure
Unbound devices may race with calling this function causing the mutex to stay locked. This failure mode should have released the mutex too. Signed-off-by: Mario Limonciello <mario.limonciello@dell.com> Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
This commit is contained in:
parent
5e3e22971f
commit
307ab2a99d
@ -91,8 +91,10 @@ int dell_smbios_wmi_call(struct calling_interface_buffer *buffer)
|
||||
|
||||
mutex_lock(&call_mutex);
|
||||
priv = get_first_smbios_priv();
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
if (!priv) {
|
||||
ret = -ENODEV;
|
||||
goto out_wmi_call;
|
||||
}
|
||||
|
||||
size = sizeof(struct calling_interface_buffer);
|
||||
difference = priv->req_buf_size - sizeof(u64) - size;
|
||||
@ -101,6 +103,7 @@ int dell_smbios_wmi_call(struct calling_interface_buffer *buffer)
|
||||
memcpy(&priv->buf->std, buffer, size);
|
||||
ret = run_smbios_call(priv->wdev);
|
||||
memcpy(buffer, &priv->buf->std, size);
|
||||
out_wmi_call:
|
||||
mutex_unlock(&call_mutex);
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user