diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2016-12-15 02:10:02 +0100 |
---|---|---|
committer | Darren Hart <dvhart@linux.intel.com> | 2016-12-18 23:56:43 +0100 |
commit | 83da6b59919a71a1a97ce9863aa0267eaf6d496c (patch) | |
tree | 945790779b9a88332ed8b1000e632da01f5b4e7f /drivers/platform | |
parent | platform/x86: Add Whiskey Cove PMIC TMU support (diff) | |
download | linux-83da6b59919a71a1a97ce9863aa0267eaf6d496c.tar.xz linux-83da6b59919a71a1a97ce9863aa0267eaf6d496c.zip |
platform/x86: surface3-wmi: Balance locking on error path
There is a possibility that lock will be left acquired.
Consolidate error path under out_free_unlock label.
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Diffstat (limited to 'drivers/platform')
-rw-r--r-- | drivers/platform/x86/surface3-wmi.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/platform/x86/surface3-wmi.c b/drivers/platform/x86/surface3-wmi.c index 5553b2b85e0a..cbf4d83a7271 100644 --- a/drivers/platform/x86/surface3-wmi.c +++ b/drivers/platform/x86/surface3-wmi.c @@ -60,10 +60,10 @@ static DEFINE_MUTEX(s3_wmi_lock); static int s3_wmi_query_block(const char *guid, int instance, int *ret) { + struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; acpi_status status; union acpi_object *obj; - - struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; + int error = 0; mutex_lock(&s3_wmi_lock); status = wmi_query_block(guid, instance, &output); @@ -77,13 +77,14 @@ static int s3_wmi_query_block(const char *guid, int instance, int *ret) obj->type == ACPI_TYPE_BUFFER ? obj->buffer.length : 0); } - kfree(obj); - return -EINVAL; + error = -EINVAL; + goto out_free_unlock; } *ret = obj->integer.value; + out_free_unlock: kfree(obj); mutex_unlock(&s3_wmi_lock); - return 0; + return error; } static inline int s3_wmi_query_lid(int *ret) |