Received: by 10.213.65.68 with SMTP id h4csp249463imn; Mon, 12 Mar 2018 12:34:01 -0700 (PDT) X-Google-Smtp-Source: AG47ELtTYpbF/vhye93xJmxq+i3GEw7441/uMwJQ3k/AvKhkSs3oslRoSR5BA/YCTLjuMUREnC5+ X-Received: by 2002:a17:902:7883:: with SMTP id q3-v6mr9015583pll.361.1520883241735; Mon, 12 Mar 2018 12:34:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1520883241; cv=none; d=google.com; s=arc-20160816; b=X5jM0KZXBB6mpEN8ELkNGBENTfaow7lwqzxlVnC9bSOkNrcxCrwqlzwUmmvi2zKl2q To2pL50ME41ctfUajGeZLyLiWnuDl2nqCbJkVHp2bl4Vk0lMDvVC29JJGc4vjsCJ4Q1n QM6rml4UQ/L5TtfgX/tFVW+N12YrJN9FO2Fmgv/yB5kDMn+0V5pK3S/dY66LCWNcVZ9x Tl9clrApd1uAgI6Gg9ANKjsjry+ih7Vs+Rc+zK5suy9b/xzuo1yh6Eb8KOvMZtWv35xH wpnVqXOq0XwPyPDmKzVLMHHxxNrmV0eF1GsC3LU1XjQ30n4LFp058TGMWBpPFE8CpIsp hFHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:newsgroups:cc:to:subject :arc-authentication-results; bh=qoiJYUdY2DytE8okfKbFBvEulIFXHCxHe3i+Kmg9de0=; b=ev7CVcN2oucdeu++LxbMqUNe2ybTEdykzEQHLtHtaxfTSvweKAh0QOMvXepK4OLBkg pDdD7ppVBpdrp4daj7HZ5i5FNm2l5aVZeRx77qHw++WfDw1f4oonpXKJeOlFUJ7dgAts x+bGmvtGXFBSPjpoz35SybarLFvrFSRn47Mgzyz9IEzta5lAYm6XOEi4ahSqtQ31jzKS bdQvR8neZLUwtlUN7T/eVHw71FQJO0MVFM8CsG3DkFfgGg9kuoyfJFIEjDsxWiYxC022 SoRJpf09sTmi3fLrH+QUCvpLV/YLd1tueb+gEFo6tuhIQYHlxk0/gVD6BCupGR+hG5ga 5ZvQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a34-v6si6524784pld.8.2018.03.12.12.33.46; Mon, 12 Mar 2018 12:34:01 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751450AbeCLTcO (ORCPT + 99 others); Mon, 12 Mar 2018 15:32:14 -0400 Received: from smtp07.smtpout.orange.fr ([80.12.242.129]:25497 "EHLO smtp.smtpout.orange.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751313AbeCLTcL (ORCPT ); Mon, 12 Mar 2018 15:32:11 -0400 Received: from [192.168.0.14] ([77.198.79.136]) by mwinf5d42 with ME id M7Y81x0092wTeBR037Y9k9; Mon, 12 Mar 2018 20:32:09 +0100 X-ME-Helo: [192.168.0.14] X-ME-Auth: Y2hyaXN0b3BoZS5qYWlsbGV0QHdhbmFkb28uZnI= X-ME-Date: Mon, 12 Mar 2018 20:32:09 +0100 X-ME-IP: 77.198.79.136 Subject: Re: [PATCH] net/mlx4_en: Fix a memory leak in case of error in 'mlx4_en_init_netdev()' To: Tariq Toukan Cc: netdev@vger.kernel.org, linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org Newsgroups: gmane.linux.kernel,gmane.linux.network,gmane.linux.drivers.rdma,gmane.linux.kernel.janitors References: <20180311224529.4427-1-christophe.jaillet@wanadoo.fr> From: Christophe Jaillet Message-ID: <9cd5ab7d-15c1-7ebf-1bf1-3fcd79525fa8@wanadoo.fr> Date: Mon, 12 Mar 2018 20:32:07 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Antivirus: Avast (VPS 180312-2, 12/03/2018), Outbound message X-Antivirus-Status: Clean Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le 12/03/2018 à 09:42, Tariq Toukan a écrit : > > > On 12/03/2018 12:45 AM, Christophe JAILLET wrote: >> If 'kzalloc' fails, we must free some memory before returning. >> >> Fixes: 67f8b1dcb9ee ("net/mlx4_en: Refactor the XDP forwarding rings >> scheme") >> Signed-off-by: Christophe JAILLET >> --- >> drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c >> b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c >> index 8fc51bc29003..f9db018e858f 100644 >> --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c >> +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c >> @@ -3327,7 +3327,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev >> *mdev, int port, >> if (!priv->tx_cq[t]) { >> kfree(priv->tx_ring[t]); >> err = -ENOMEM; >> - goto out; >> + goto err_free_tx; >> } >> } >> priv->rx_ring_num = prof->rx_ring_num; >> > > Hi Christophe, thanks for spotting this. > > However, I think these err_free_tx label and loop are redundant. > Both tx_ring/tx_cq flows should just goto out, as resources are freed > later in mlx4_en_destroy_netdev() -> mlx4_en_free_resources(). > Hi, I do not agree with you and I think that the patch is relevant. If 'mlx4_en_init_netdev' fails, the only caller, 'mlx4_en_activate()', will set: mdev->pndev[i] = NULL (see https://elixir.bootlin.com/linux/v4.16-rc5/source/drivers/net/ethernet/mellanox/mlx4/en_main.c#L254) and 'mlx4_en_destroy_netdev()' is not called in this case. (see https://elixir.bootlin.com/linux/v4.16-rc5/source/drivers/net/ethernet/mellanox/mlx4/en_main.c#L232) My understanding is that 'mlx4_en_destroy_netdev()' will free resources in the normal case but that resources should be freed at allocation time if it does not fully succeed. Best regards, CJ --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus