Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp6967481rwb; Tue, 15 Nov 2022 06:07:32 -0800 (PST) X-Google-Smtp-Source: AA0mqf6RALeJsOdx8/x89f8Qi/9pFLU+5Ub66kBhWBqfG1oM5WBG7I5EMQoWi8dj1YhjcQKpkLLI X-Received: by 2002:a63:1b17:0:b0:457:dced:8ba9 with SMTP id b23-20020a631b17000000b00457dced8ba9mr16066014pgb.221.1668521251733; Tue, 15 Nov 2022 06:07:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668521251; cv=none; d=google.com; s=arc-20160816; b=tGD6EdB54qbuQUHq9CZwXiVBZOpuBx4axMDnglMEPXV09jzGsnqQRn6SfPTFUi2qo3 ldxXavJVu0RlVRfXuvWZRlIjlW1ebaUaWT7sQrLfQ080TgrzWltcvHCI4jIx6Bl3pSg0 4tZof5vvTDJQJn9RpUz26CnXLwATVuCorxML9O+55okeEEJNSpGuz4sL6SegGPl+e7Lv 2kpKt6BbsG15Uqf/0mTj6Ws7nNdfloTsSmJ4c3NkV8cLbi37KhzcPWwor12zgaM+ywpl eXvov0WQ+w3WsjUSYcDpc+XOYHJ0R22ON2fdgqkm1maCI63uvoqu+BCLAvMCA5lniGCA /Q2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=uy/Pb160Y9Wa+pIWyelMpKX928gBEsjjFcmjkMEQKr0=; b=yuvj1SaSmdIP9KHwksvPnuMx1Jjx/Mv0ilemESZkly+DHK1kAeZ3gCNExmgOAWa/uj XFkUJehLTJXupEMm5pX7M1cJJTYeLVXrToY01taMZG6ntoP0lf2xpWbiQkdkizSo1L/s LWEOH+OgJA1IFVpMz7vVjNZ0ikhOMAVeAc1iyvxd6tYaZCQMJOiX4J1wUz5qFq9ynucc SQucFgC9+M0URQzVoj91avC5lzfxpcCZrlut7DoMn/A/K/HswK4MeQT8VvyVimKnx+Fa DAuHQMDqf7rDgTJ4F0HBQ/9Ya0Ly7IkIFw0qOiRz5HC0kLgWZ4AB9cEPW5DgRZxT8JLt /yHQ== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e27-20020a63545b000000b0046feb2838easi12461736pgm.140.2022.11.15.06.07.00; Tue, 15 Nov 2022 06:07:31 -0800 (PST) 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; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237647AbiKONUv (ORCPT + 89 others); Tue, 15 Nov 2022 08:20:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51254 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229723AbiKONUt (ORCPT ); Tue, 15 Nov 2022 08:20:49 -0500 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F894DEC6; Tue, 15 Nov 2022 05:20:48 -0800 (PST) Received: from dggpeml500022.china.huawei.com (unknown [172.30.72.56]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4NBRcp5bD8zRpKR; Tue, 15 Nov 2022 21:20:26 +0800 (CST) Received: from dggpeml500006.china.huawei.com (7.185.36.76) by dggpeml500022.china.huawei.com (7.185.36.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 15 Nov 2022 21:20:45 +0800 Received: from [10.174.178.240] (10.174.178.240) by dggpeml500006.china.huawei.com (7.185.36.76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 15 Nov 2022 21:20:44 +0800 Subject: Re: [PATCH net] net: nixge: fix potential memory leak in nixge_start_xmit() To: Francois Romieu CC: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Moritz Fischer , , References: <1668416136-33530-1-git-send-email-zhangchangzhong@huawei.com> From: Zhang Changzhong Message-ID: <21641ba0-3ce1-c409-b513-1bbbaeccaa51@huawei.com> Date: Tue, 15 Nov 2022 21:20:44 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.178.240] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggpeml500006.china.huawei.com (7.185.36.76) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_MED,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 On 2022/11/14 18:40, Francois Romieu wrote: > Zhang Changzhong : >> The nixge_start_xmit() returns NETDEV_TX_OK but does not free skb on two >> error handling cases, which can lead to memory leak. >> >> To fix this, return NETDEV_TX_BUSY in case of nixge_check_tx_bd_space() >> fails and add dev_kfree_skb_any() in case of dma_map_single() fails. > > This patch merge two unrelated changes. Please split. > >> Fixes: 492caffa8a1a ("net: ethernet: nixge: Add support for National Instruments XGE netdev") >> Signed-off-by: Zhang Changzhong >> --- >> drivers/net/ethernet/ni/nixge.c | 6 ++++-- >> 1 file changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/net/ethernet/ni/nixge.c b/drivers/net/ethernet/ni/nixge.c >> index 19d043b593cc..b9091f9bbc77 100644 >> --- a/drivers/net/ethernet/ni/nixge.c >> +++ b/drivers/net/ethernet/ni/nixge.c >> @@ -521,13 +521,15 @@ static netdev_tx_t nixge_start_xmit(struct sk_buff *skb, >> if (nixge_check_tx_bd_space(priv, num_frag)) { >> if (!netif_queue_stopped(ndev)) >> netif_stop_queue(ndev); >> - return NETDEV_TX_OK; >> + return NETDEV_TX_BUSY; >> } > > The driver should probably check the available room before returning > from hard_start_xmit and turn the check above unlikely(). > > Btw there is no lock and the Tx completion is irq driven: the driver > is racy. :o( > Hi Francois, Thanks for you review. I'll make v2 according to your suggestion. Changzhong