From patchwork Thu Dec 15 17:41:06 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 9476651 X-Patchwork-Delegate: andy.shevchenko@gmail.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 849AA6047D for ; Thu, 15 Dec 2016 17:41:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 795B5287ED for ; Thu, 15 Dec 2016 17:41:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6E3F8287F1; Thu, 15 Dec 2016 17:41:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 05FFB287ED for ; Thu, 15 Dec 2016 17:41:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752328AbcLORlN (ORCPT ); Thu, 15 Dec 2016 12:41:13 -0500 Received: from mga09.intel.com ([134.134.136.24]:33883 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752075AbcLORlN (ORCPT ); Thu, 15 Dec 2016 12:41:13 -0500 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 15 Dec 2016 09:41:11 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,352,1477983600"; d="scan'208";a="18598901" Received: from smile.fi.intel.com (HELO smile) ([10.237.72.86]) by orsmga002.jf.intel.com with ESMTP; 15 Dec 2016 09:41:10 -0800 Received: from andy by smile with local (Exim 4.88) (envelope-from ) id 1cHa1l-0003f6-HJ; Thu, 15 Dec 2016 19:41:09 +0200 From: Andy Shevchenko To: linux-kernel@vger.kernel.org Cc: Andy Shevchenko , Darren Hart , platform-driver-x86@vger.kernel.org Subject: [PATCH v2 1/1] platform/x86: surface3-wmi: Balance locking on error path Date: Thu, 15 Dec 2016 19:41:06 +0200 Message-Id: <20161215174106.13916-1-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.11.0 Sender: platform-driver-x86-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP There is a possibility that lock will be left acquired. Consolidate error path under out_free_unlock label. Reported-by: kbuild test robot Reviewed-by: Benjamin Tissoires Signed-off-by: Andy Shevchenko Reviewed-by: Darren Hart --- In v2: - address Darren's comments - update tags (in particular put proper email of reporter) I dare to push this to testing ahead. If anyone has objections, tell me asap. 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..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)