Received: by 2002:a25:ca44:0:0:0:0:0 with SMTP id a65csp786176ybg; Tue, 28 Jul 2020 20:05:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxj5CnEz8nYYnk9EPvMYlhbLoDjkqvIIdHxYxMrwRng0TSMTrga/RhB1DGbz22PgTbLWuRl X-Received: by 2002:a17:906:8316:: with SMTP id j22mr8778849ejx.20.1595991906128; Tue, 28 Jul 2020 20:05:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595991906; cv=none; d=google.com; s=arc-20160816; b=vox6FTPjHGKG2vaE3YBX9D+oE0mfC2EUijl93343Kb8c376BYPLuPJDehv3ykxdYmf /Mrv9NQ+wtZX/IAZExoPDyHOLBy6Km64mFMpZpl0uhfXq5wk8AZyd344V6YaGvi3aY9C lvKkxtPJ2Fmn5ZgA5+CmtYwhBt4AWfAH46htFMebxd/o2s1SDHpjTT/l0LMoqpb99Xda eO9y9MzGrNhObOc1d6eNncrmZCLVl6m3Q6PdzGJre1Sq6ej6d/g60VFv4Yp1XTzKxfA0 AQZqE8c+3R+5sl9WH2vVZGDhykVnLY+daHZfh7tzu7wIA7xjbnLzyK8MX8AJfMR7lu7t nbmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:to :from; bh=odIpo/1qazj0lONWbG4eeH9hwGNQov/Iy9ciohRF0g4=; b=TGABXdY1+pIqhuwLmd73z7jFZulMFayl5wgcjz5gYIHC5hoTMSkfYCgsUamrzlNGDY lbsnFCuv+NY3bIJI65d/bH8g6CJiXZZuUUd+GVXE7RcdjpgFfghN60FRpWUiQhdeI93R su8LvYUKJ7YX2Wiu8cQGthUGvwtxbXkTPVYs4buFrV+zooMeWSSbyHdX5MXmoWm/sQ80 I/is8uZ7JIDJp8bvEPppBycK/r2B8wzB2RSKHwMyRXrNagApNb8DnKNOxeh+VmFgC86T 9P4n2eZzIMGbOSlvTK8b9vOtNHsPuzXC5cJGdY1FCsHDHlNn0zlVgHwZFzaD29QlCXjq O5jg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b24si418294edx.252.2020.07.28.20.04.43; Tue, 28 Jul 2020 20:05:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731173AbgG2DEc (ORCPT + 99 others); Tue, 28 Jul 2020 23:04:32 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:8292 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1731057AbgG2DEb (ORCPT ); Tue, 28 Jul 2020 23:04:31 -0400 Received: from DGGEMS410-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 27FFA65DC97449FFB3C6; Wed, 29 Jul 2020 11:04:29 +0800 (CST) Received: from huawei.com (10.175.101.6) by DGGEMS410-HUB.china.huawei.com (10.3.19.210) with Microsoft SMTP Server id 14.3.487.0; Wed, 29 Jul 2020 11:04:21 +0800 From: Lu Wei To: , , , , , , , , Subject: [PATCH] net: nixge: fix potential memory leak in nixge_probe() Date: Wed, 29 Jul 2020 11:50:05 +0800 Message-ID: <20200729035005.89161-1-luwei32@huawei.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.175.101.6] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If some processes in nixge_probe() fail, free_netdev(dev) needs to be called to aviod a memory leak. Fixes: 87ab207981ec ("net: nixge: Separate ctrl and dma resources") Fixes: abcd3d6fc640 ("net: nixge: Fix error path for obtaining mac address") Reported-by: Hulk Robot Signed-off-by: Lu Wei --- drivers/net/ethernet/ni/nixge.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/ni/nixge.c b/drivers/net/ethernet/ni/nixge.c index d2708a57f2ff..4075f5e59955 100644 --- a/drivers/net/ethernet/ni/nixge.c +++ b/drivers/net/ethernet/ni/nixge.c @@ -1299,19 +1299,21 @@ static int nixge_probe(struct platform_device *pdev) netif_napi_add(ndev, &priv->napi, nixge_poll, NAPI_POLL_WEIGHT); err = nixge_of_get_resources(pdev); if (err) - return err; + goto free_netdev; __nixge_hw_set_mac_address(ndev); priv->tx_irq = platform_get_irq_byname(pdev, "tx"); if (priv->tx_irq < 0) { netdev_err(ndev, "could not find 'tx' irq"); - return priv->tx_irq; + err = priv->tx_irq; + goto free_netdev; } priv->rx_irq = platform_get_irq_byname(pdev, "rx"); if (priv->rx_irq < 0) { netdev_err(ndev, "could not find 'rx' irq"); - return priv->rx_irq; + err = priv->rx_irq; + goto free_netdev; } priv->coalesce_count_rx = XAXIDMA_DFT_RX_THRESHOLD; -- 2.17.1