From nobody Fri Jun 19 18:18:01 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BAC4DC433F5 for ; Thu, 31 Mar 2022 06:45:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231360AbiCaGrE (ORCPT ); Thu, 31 Mar 2022 02:47:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51160 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230284AbiCaGrC (ORCPT ); Thu, 31 Mar 2022 02:47:02 -0400 Received: from out162-62-57-137.mail.qq.com (out162-62-57-137.mail.qq.com [162.62.57.137]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 86A75EF088 for ; Wed, 30 Mar 2022 23:45:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1648709107; bh=bufxMJHVCYXrsdpVg5rYz5crzyMeuyybMNfKuLxj1ts=; h=From:To:Cc:Subject:Date; b=ofwztv+peyJNgksAFcetcvI3pFlozq36Ui0bsi8qA/Shhg1DsTD9uVSmR/3TyZzy+ YWN9blwed9neuZxOvpPg7GSi4s9zjpx3vEANxK23gHLPVfJ1Os96GViGn5LiOTE1ML 0y6YuweFn+F1GzbEB+j9nkBzWfw3SMFcKGgBgHBY= Received: from localhost.localdomain ([43.227.138.48]) by newxmesmtplogicsvrszc11.qq.com (NewEsmtp) with SMTP id B442E060; Thu, 31 Mar 2022 14:45:04 +0800 X-QQ-mid: xmsmtpt1648709104tbeh6zl7s Message-ID: X-QQ-XMAILINFO: NdlHRE7tlvP0wtWI2e0bKZfYqAcsdByok55RWiz4vdyUMFq/FmyqIa/bN07In6 QxBaPb0yWxXbD2MV4kyd37V1bUko9K4rlUDWgMJgHaohA1hBR9rsjzbACOf8kHUo/JWPBHPPTGeF OHo+ssEg3JGuH5kuwuGqVhUKNFAemhWqr2FKtWM+aj30V628QbU4hBInQhkazbMOSaHwqenCpJ/z h0fdCIeQLDwPHFQPl+JZpRkmnqV2VTOQ2TVBnDjikcI/qkBuz9JSCoYI4+ZGK1xuI4vK+zyXfUVc G8F0O0F+jdzmvpXWg3PLymkvl3Jm+4iM46lpoWUal/uWi7i1EdNUjbmj0QnyiXeVm2DWdyr6YRq/ oDP0CGkYocTM2tTu/0drhWqxUQDWv+mLcGCTnEYx6hokibbd4NvpBcyF03fAFhWkbL/wuqlyx/ow ASsJsCcMCP4ZifxedXIi24xmh0gdlObE348K7aIpRkSFuqN1HZ7MoRSCFBMR6GmABExd6j9HdzE5 AT98Fzu0tdNUZldopi7UsnpC5zHPfvMZOYghJZ66MCHZYqNgNkoanyC/+HBN3EbkjzXrrmhHPThC J6RHmvOuOlH+y0m275M13UoL5CLl2s/Ek6bp4wpkrx3gwQzhPZ8ykR60hA8FVhx2Veg7gL1V1b7U DFxyMR+s9D2aQNgquIEKKj+otF+T5hbwQB0drt470btHGB8ShJZiKIi9Tv4hhqSme4aA0YIqgcfQ k++phgTSr8swJh7ZUa1X1FcXsK7g2ahM8ao8RvEM6OMCJmU0PdtKEdB0zowGBQAiuq2kT1kF4fRw mDb4axCpIuqN/w84QSpQYlK3osRv8v3O70vxtebHDLaqEyL9ym3Olabk6xMrcbNGvy5+tC66YHUr m09DS7ZEgZjQeFgzPJO+tRUoY5OZFEjLW6PfxHi1syAjREwgit7SlymT2+pQeZlTqGBnBTAga44X VohplMaK6cssZNXps0rg== From: xkernel.wang@foxmail.com To: Larry.Finger@lwfinger.net, phil@philpotter.co.uk, gregkh@linuxfoundation.org Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Xiaoke Wang Subject: [PATCH v3] staging: r8188eu: fix a potential memory leak in _rtw_init_cmd_priv() Date: Thu, 31 Mar 2022 14:44:52 +0800 X-OQ-MSGID: <20220331064452.7143-1-xkernel.wang@foxmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Xiaoke Wang In _rtw_init_cmd_priv(), if `pcmdpriv->rsp_allocated_buf` is allocated in failure, `pcmdpriv->cmd_allocated_buf` is not properly released. This patch is to free it. Signed-off-by: Xiaoke Wang --- ChangeLog: v1->v2: simplify the function. v2->v3: rebase and recover some whitespace cleanups. drivers/staging/r8188eu/core/rtw_cmd.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/drivers/staging/r8188eu/core/rtw_cmd.c b/drivers/staging/r8188= eu/core/rtw_cmd.c index 4eeb961..f6653d6 100644 --- a/drivers/staging/r8188eu/core/rtw_cmd.c +++ b/drivers/staging/r8188eu/core/rtw_cmd.c @@ -18,8 +18,6 @@ No irqsave is necessary. =20 static int _rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) { - int res =3D _SUCCESS; - init_completion(&pcmdpriv->enqueue_cmd); /* sema_init(&(pcmdpriv->cmd_done_sema), 0); */ init_completion(&pcmdpriv->start_cmd_thread); @@ -34,27 +32,24 @@ static int _rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) pcmdpriv->cmd_allocated_buf =3D kzalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ, GFP_KERNEL); =20 - if (!pcmdpriv->cmd_allocated_buf) { - res =3D _FAIL; - goto exit; - } + if (!pcmdpriv->cmd_allocated_buf) + return _FAIL; =20 pcmdpriv->cmd_buf =3D pcmdpriv->cmd_allocated_buf + CMDBUFF_ALIGN_SZ - = ((size_t)(pcmdpriv->cmd_allocated_buf) & (CMDBUFF_ALIGN_SZ - 1)); =20 pcmdpriv->rsp_allocated_buf =3D kzalloc(MAX_RSPSZ + 4, GFP_KERNEL); =20 if (!pcmdpriv->rsp_allocated_buf) { - res =3D _FAIL; - goto exit; + kfree(pcmdpriv->cmd_allocated_buf); + return _FAIL; } =20 pcmdpriv->rsp_buf =3D pcmdpriv->rsp_allocated_buf + 4 - ((size_t)(pcmdp= riv->rsp_allocated_buf) & 3); =20 pcmdpriv->cmd_done_cnt =3D 0; pcmdpriv->rsp_cnt =3D 0; -exit: =20 - return res; + return _SUCCESS; } =20 static void c2h_wk_callback(struct work_struct *work); --