From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934774AbcLOBai (ORCPT ); Wed, 14 Dec 2016 20:30:38 -0500 Received: from mga14.intel.com ([192.55.52.115]:56927 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933974AbcLOBah (ORCPT ); Wed, 14 Dec 2016 20:30:37 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,349,1477983600"; d="scan'208";a="202732344" From: Andy Shevchenko To: linux-kernel@vger.kernel.org Cc: Andy Shevchenko , Benjamin Tissoires , Darren Hart , platform-driver-x86@vger.kernel.org (open list:X86 PLATFORM DRIVERS) Subject: [PATCH 1/1] platform/x86: surface3-wmi: Balance locking on error path Date: Thu, 15 Dec 2016 03:24:58 +0200 Message-Id: <20161215012458.501-1-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.11.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There is a possibility that lock will be left acquired. Consolidate error path under out_free_unlock label. Reported-by: kbuild test robot Cc: Benjamin Tissoires Signed-off-by: Andy Shevchenko --- drivers/platform/x86/surface3-wmi.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/platform/x86/surface3-wmi.c b/drivers/platform/x86/surface3-wmi.c index 5553b2b85e0a..ed7a3b77a0cc 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) -- 2.11.0