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>
 
        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;
        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;