Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp7396059rwi; Mon, 24 Oct 2022 14:06:54 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5w6rUsTnaYepu46qyudWJhPM2wfXBT3Tm60mJUAl+fIbO1/BwEJnaj4tGK4AtDri1JkMWQ X-Received: by 2002:aa7:cb09:0:b0:461:e6b6:4bad with SMTP id s9-20020aa7cb09000000b00461e6b64badmr3916861edt.27.1666645614507; Mon, 24 Oct 2022 14:06:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666645614; cv=none; d=google.com; s=arc-20160816; b=LDrFrz0A4noRreq7+ouDiv3CPkCk56D2JiC0kh5SpZB0+7ruKM/hT10XRhIM0GI5vx Wx881eRQLbDBxEX01fvdhCAuz8ypwXyb6i0Lf/XSOuo1nW4K1uaWKcza9qQlEX5Eo0Un 4Zm+nB34uHRTM1Jk2vdPPCfkKs5yTgF2kKxgPOShNo4b1rq+jSeDnF2C0oMez3nYb+l4 OZq55SGF4K5+kW9tSMprUqjdGhTIInSM/TBxdyPcZO0JAnEIAdH22qj8fO2opYF+bj7L qNiSP6h8UdiO57OHKxw3TLcxT95XXwTW86rXSAlA+uaL6UyT26/M+KybXLgmm9GtvDsa rJ3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=z+jCTTgwLWvRoMsugQkhW1Pcb+h/mVljyL6bImSEzSU=; b=MA587IYqAWgNW8jt6mOReWUvBYGvUdGVrylGoqIKU7sREZLwac5MDP+Q4qJ5tt3c0U nj+FdBLVZfgpOLGtnaly6ObJgkHCTQTNA/5nLkEsyM532XMzy+apO9HMGCW6LaO0eTt2 FkrTXmf0FdYfetuKkZGrKRXh8XsnJxR34VEgOmXaOGb1DTiSCgHThvjAYGD2dGZtgl4N RDsS/145sKV4gwM+lU9Ook425VIBGErm+dQ77SwKJCbmiQdsT9G11OSWZVxIcrqnLxTa vEoM9QLeQ+WYe6OaMNqb87N+syTPAWCsaXgSgJdWy+czNUrCbtFLJ3MgnVPP9EiR7Vab pbcQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=HZpYtw42; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ec28-20020a0564020d5c00b004571a669230si605370edb.469.2022.10.24.14.06.29; Mon, 24 Oct 2022 14:06:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=HZpYtw42; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230343AbiJXUJz (ORCPT + 99 others); Mon, 24 Oct 2022 16:09:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56114 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234018AbiJXUJC (ORCPT ); Mon, 24 Oct 2022 16:09:02 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 10220EF592; Mon, 24 Oct 2022 11:28:43 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 02B476133B; Mon, 24 Oct 2022 12:56:24 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0F86EC433B5; Mon, 24 Oct 2022 12:56:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1666616183; bh=qd6LVdBCL3Cil1E7dDFfBwIQmLB/mefnb3pIebjmg/g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HZpYtw42oMsmNE3xjYt2w+tzbJvbxoAePxCG772U3U3F6F6RFrhc/dRQsOAoHUpVs lmSWExDDiKiWFFWDFTGm1SsjOzb5SXVL2WKS7six+D3OESlGQEWcAuT6j07GibrYlp UxV+o/j3Yk+lHwKYQPROpmcTMkHIVqeSoJL9lees= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xiaoke Wang , Sasha Levin Subject: [PATCH 5.15 501/530] staging: rtl8723bs: fix potential memory leak in rtw_init_drv_sw() Date: Mon, 24 Oct 2022 13:34:05 +0200 Message-Id: <20221024113107.727170624@linuxfoundation.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221024113044.976326639@linuxfoundation.org> References: <20221024113044.976326639@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xiaoke Wang [ Upstream commit 5a5aa9cce621e2c0e25a1e5d72d6be1749167cc0 ] In rtw_init_drv_sw(), there are various init functions are called to populate the padapter structure and some checks for their return value. However, except for the first one error path, the other five error paths do not properly release the previous allocated resources, which leads to various memory leaks. This patch fixes them and keeps the success and error separate. Note that these changes keep the form of `rtw_init_drv_sw()` in "drivers/staging/r8188eu/os_dep/os_intfs.c". As there is no proper device to test with, no runtime testing was performed. Signed-off-by: Xiaoke Wang Link: https://lore.kernel.org/r/tencent_C3B899D2FC3F1BC827F3552E0B0734056006@qq.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/staging/rtl8723bs/os_dep/os_intfs.c | 60 +++++++++++---------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/drivers/staging/rtl8723bs/os_dep/os_intfs.c b/drivers/staging/rtl8723bs/os_dep/os_intfs.c index f78bf174de8e..23f4f706f935 100644 --- a/drivers/staging/rtl8723bs/os_dep/os_intfs.c +++ b/drivers/staging/rtl8723bs/os_dep/os_intfs.c @@ -664,51 +664,36 @@ void rtw_reset_drv_sw(struct adapter *padapter) u8 rtw_init_drv_sw(struct adapter *padapter) { - u8 ret8 = _SUCCESS; - rtw_init_default_value(padapter); rtw_init_hal_com_default_value(padapter); - if (rtw_init_cmd_priv(&padapter->cmdpriv)) { - ret8 = _FAIL; - goto exit; - } + if (rtw_init_cmd_priv(&padapter->cmdpriv)) + return _FAIL; padapter->cmdpriv.padapter = padapter; - if (rtw_init_evt_priv(&padapter->evtpriv)) { - ret8 = _FAIL; - goto exit; - } + if (rtw_init_evt_priv(&padapter->evtpriv)) + goto free_cmd_priv; - - if (rtw_init_mlme_priv(padapter) == _FAIL) { - ret8 = _FAIL; - goto exit; - } + if (rtw_init_mlme_priv(padapter) == _FAIL) + goto free_evt_priv; init_mlme_ext_priv(padapter); - if (_rtw_init_xmit_priv(&padapter->xmitpriv, padapter) == _FAIL) { - ret8 = _FAIL; - goto exit; - } + if (_rtw_init_xmit_priv(&padapter->xmitpriv, padapter) == _FAIL) + goto free_mlme_ext; - if (_rtw_init_recv_priv(&padapter->recvpriv, padapter) == _FAIL) { - ret8 = _FAIL; - goto exit; - } + if (_rtw_init_recv_priv(&padapter->recvpriv, padapter) == _FAIL) + goto free_xmit_priv; /* add for CONFIG_IEEE80211W, none 11w also can use */ spin_lock_init(&padapter->security_key_mutex); /* We don't need to memset padapter->XXX to zero, because adapter is allocated by vzalloc(). */ /* memset((unsigned char *)&padapter->securitypriv, 0, sizeof (struct security_priv)); */ - if (_rtw_init_sta_priv(&padapter->stapriv) == _FAIL) { - ret8 = _FAIL; - goto exit; - } + if (_rtw_init_sta_priv(&padapter->stapriv) == _FAIL) + goto free_recv_priv; padapter->stapriv.padapter = padapter; padapter->setband = GHZ24_50; @@ -719,9 +704,26 @@ u8 rtw_init_drv_sw(struct adapter *padapter) rtw_hal_dm_init(padapter); -exit: + return _SUCCESS; + +free_recv_priv: + _rtw_free_recv_priv(&padapter->recvpriv); + +free_xmit_priv: + _rtw_free_xmit_priv(&padapter->xmitpriv); + +free_mlme_ext: + free_mlme_ext_priv(&padapter->mlmeextpriv); - return ret8; + rtw_free_mlme_priv(&padapter->mlmepriv); + +free_evt_priv: + rtw_free_evt_priv(&padapter->evtpriv); + +free_cmd_priv: + rtw_free_cmd_priv(&padapter->cmdpriv); + + return _FAIL; } void rtw_cancel_all_timer(struct adapter *padapter) -- 2.35.1