Received: by 2002:a05:6a10:83d0:0:0:0:0 with SMTP id o16csp208904pxh; Thu, 7 Apr 2022 19:06:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw5bL1F7nqnKUOh0J9eGdKGH+tWoaqF8pEbYKvKEeo1hQz4m5SNHAQoqFZDqFA4AbbyJIJ4 X-Received: by 2002:a17:90b:1994:b0:1ca:9b45:405e with SMTP id mv20-20020a17090b199400b001ca9b45405emr18957464pjb.22.1649383586937; Thu, 07 Apr 2022 19:06:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649383586; cv=none; d=google.com; s=arc-20160816; b=nuf/yp+yXUOI6EEu6+EnhVQXVwL9ZXPjPN4Fz21MgDXow+dRY3x0m/XYdz1bwmwK3h z5RD4xDjjrtZ5tqg1H5VW8IIYoZ+xAmbTwDHsTg4UGQTarTAraqc8yr/OsZpCdjp6JFh flwAuNwLPjNpa8McxRAhz5sD7qN9SHhxU2QESPHEdIFiGN54UAr7pKK4n2VvCzxTUH7g Wb4b7uL9B/3K1e/j0sVH4y/qpFMsH+jJUEDTNIdOTalpVctbIcKv9tcz/pRTm/cGR4Px 13SnMyJUJr9i88aQHlx3MsnSz0HJjmWMNGkw1l7ucj8yllKaELxaRg9KEwQ2wB95pTmx njxQ== 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 :references:in-reply-to:date:subject:cc:to:from:message-id :dkim-signature; bh=S/8n9mmxDhnXnbv+jyDGJ4Z8CVZEzYgHvoBZsxCyIas=; b=qlH49E9owz9ghg3HZUhd0J/bNG4K6J3QllAFdV4IF9muODyiPMbFLI1lRdUmj88ujY dycX7rCkMMOKqiKK8DGyjgScUp1L6Rs+gqVuTwMpucIIRL9VC74ivx9IfhRMJt5af9Va tCaUgqfNCEHQ5/MzkdQZE1vJw/nrV6sWNf/pE3tDXawIkmc0mvoSN/ET4gVMyAIM44Ng Q83jWYtQITb4jAxYuE8RH9sroaPfFM/MIpnKC3ihcMnGJko+mO5xk4smkrdZz2ROQ5us kxBvcwd6NhNLMbnoaRLssGylXhnAyLB9VNQ9kK/urSJ4iR3kSfmcum4Vf/9zYHZmay9b YW2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@foxmail.com header.s=s201512 header.b=VEdrsmTc; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id c9-20020a170902848900b00156db89bde3si1354537plo.25.2022.04.07.19.06.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Apr 2022 19:06:26 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@foxmail.com header.s=s201512 header.b=VEdrsmTc; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DE6D714FB97; Thu, 7 Apr 2022 18:38:40 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233494AbiDHBkg (ORCPT + 99 others); Thu, 7 Apr 2022 21:40:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53350 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233522AbiDHBkc (ORCPT ); Thu, 7 Apr 2022 21:40:32 -0400 Received: from out203-205-251-60.mail.qq.com (out203-205-251-60.mail.qq.com [203.205.251.60]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B551E092 for ; Thu, 7 Apr 2022 18:38:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1649381905; bh=S/8n9mmxDhnXnbv+jyDGJ4Z8CVZEzYgHvoBZsxCyIas=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=VEdrsmTcL6DL4NcLomNxrUvnHBqX/fAeJgOaNBuNTIus9v/3qOY1vg0QkQlbodDUi V6dEqORLeE6UMaLkhzh7WjMiYIUjR17gZo846t9lhe2Y9r/GTnbOF30LmeUSz0i3eF g5Etp4hYSAOO5ewP/blxmdF4j0/tc0ILKWMwzWks= Received: from localhost.localdomain ([218.197.153.188]) by newxmesmtplogicsvrsza7.qq.com (NewEsmtp) with SMTP id 9952D8CE; Fri, 08 Apr 2022 09:38:21 +0800 X-QQ-mid: xmsmtpt1649381901ta7z22dgr Message-ID: X-QQ-XMAILINFO: N7h1OCCDntuj7gXE9EPckiz5cMCCuJIMVfBHD5XvwVJrXKj/SUhg4xmMUB80zp hd9T08xuuFLdYN1n7PDD8gXvqgIK0IJD4v+0dy0zoFtD1Wt/06MaAIwWg/TJGoLQO/zAQlb1Vk1l BbJdKuFEiBOysOG49ON94WHDrzY+8O8jYNW0P5pQfo+WcfHYsDxB0epwy2bnkhssjfiuWhmDYO+9 eSr8ftqwlHHsMclrCiZlPbtwzqg0DwiLgIX8/sEe2juHLohotcMaTaE9pWZa0nlfdySWpQ+a+e97 WSDY5Uxvk897imW470xUl70P5Zv/F/O6/kHb7qzhZ9hpy55VjQoYO7m5bh3Q4B+qOUZErAlt8PXe 4pSKZyFTES3RRfeN3Clwn2N88I4mT2JEL/OvkjP1Fo+T9w/bOgEVUGDyJNbg/QK4wEE/f2kMcdIF FvjADNrGZRL4nSi6lbiMaqL5M0DJRav2gKaCFQqhmgIkku9kGgKFxD6ansWBW9s2KDg6TtvXnw1v olMq+xsJzKJ35lmq5npXHrZmHzqByzyGFPRIWzOtrBgYAHvvNqWivEqrRahkIoMlZVyOU9KY2C08 f+bmWcZ7pFDgoCoRsSlXWrEwoo4hiO8qvJpIhip5Sq2iV8lNpsdqC5f455D3nUfMldvXysNg4pPn 3kliXas2QBci04M+h9FhYbARcRSSeOC7CgOjFy0OQqAGNtTF2vataUhYNrqPTcyvQnWlDwGxjiei BSP9nnOYSvQpOPiAJ7KBLnuRpBpu2Da0CVaVVl1/YMqEHUksbJ4CzsquOErxIFeQakR6O4BH5RpZ KqhYaulZi2+GM7fKUmn8PSyK7m9hy0I2YbTmJgWEjL37TEn0LnWd+Xm0HcJiDWG+UMxmnOqlC8tY m2TfZvwoGkZsVdHhSQvn4u9ScligebV6I/IH8hZZ0+YSfnKpZvbKhSaJ1S4SZUYySbsWngMkDBWR bsLlslrmA= From: xkernel.wang@foxmail.com To: gregkh@linuxfoundation.org, paskripkin@gmail.com Cc: Larry.Finger@lwfinger.net, phil@philpotter.co.uk, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Xiaoke Wang Subject: [PATCH v3 2/2] staging: r8188eu: check the return of kzalloc() Date: Fri, 8 Apr 2022 09:38:07 +0800 X-OQ-MSGID: <20220408013807.15076-1-xkernel.wang@foxmail.com> In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=no 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 kzalloc() is a memory allocation function which can return NULL when some internal memory errors happen. So it is better to handle the return of it to prevent potential wrong memory access. Besides, to propagate the error to the caller, the type of rtw_alloc_hwxmits() is changed to `int` and another check is added to its caller. Then if kzalloc() fails, the caller will properly jump to the corresponding error hanlding code. Signed-off-by: Xiaoke Wang --- ChangeLog: v1->v2 update the description and adjust the sequence of patches. v2->v3 change `s32` -> `int`. drivers/staging/r8188eu/core/rtw_xmit.c | 10 ++++++++-- drivers/staging/r8188eu/include/rtw_xmit.h | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/staging/r8188eu/core/rtw_xmit.c b/drivers/staging/r8188eu/core/rtw_xmit.c index 865b2fc..92a1ad3 100644 --- a/drivers/staging/r8188eu/core/rtw_xmit.c +++ b/drivers/staging/r8188eu/core/rtw_xmit.c @@ -176,7 +176,9 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter) pxmitpriv->free_xmit_extbuf_cnt = num_xmit_extbuf; - rtw_alloc_hwxmits(padapter); + res = rtw_alloc_hwxmits(padapter); + if (res == _FAIL) + goto free_xmit_extbuf; rtw_init_hwxmits(pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry); for (i = 0; i < 4; i++) @@ -1490,7 +1492,7 @@ s32 rtw_xmit_classifier(struct adapter *padapter, struct xmit_frame *pxmitframe) return res; } -void rtw_alloc_hwxmits(struct adapter *padapter) +int rtw_alloc_hwxmits(struct adapter *padapter) { struct hw_xmit *hwxmits; struct xmit_priv *pxmitpriv = &padapter->xmitpriv; @@ -1498,6 +1500,8 @@ void rtw_alloc_hwxmits(struct adapter *padapter) pxmitpriv->hwxmit_entry = HWXMIT_ENTRY; pxmitpriv->hwxmits = kzalloc(sizeof(struct hw_xmit) * pxmitpriv->hwxmit_entry, GFP_KERNEL); + if (!pxmitpriv->hwxmits) + return _FAIL; hwxmits = pxmitpriv->hwxmits; @@ -1514,6 +1518,8 @@ void rtw_alloc_hwxmits(struct adapter *padapter) hwxmits[3] .sta_queue = &pxmitpriv->bk_pending; } else { } + + return _SUCCESS; } void rtw_free_hwxmits(struct adapter *padapter) diff --git a/drivers/staging/r8188eu/include/rtw_xmit.h b/drivers/staging/r8188eu/include/rtw_xmit.h index b2df148..fa35776 100644 --- a/drivers/staging/r8188eu/include/rtw_xmit.h +++ b/drivers/staging/r8188eu/include/rtw_xmit.h @@ -341,7 +341,7 @@ s32 rtw_txframes_sta_ac_pending(struct adapter *padapter, void rtw_init_hwxmits(struct hw_xmit *phwxmit, int entry); s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter); void _rtw_free_xmit_priv(struct xmit_priv *pxmitpriv); -void rtw_alloc_hwxmits(struct adapter *padapter); +int rtw_alloc_hwxmits(struct adapter *padapter); void rtw_free_hwxmits(struct adapter *padapter); s32 rtw_xmit(struct adapter *padapter, struct sk_buff **pkt); --