Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp12903001pxu; Sat, 2 Jan 2021 16:35:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJyrtZ2clCFJ5ehuro/sMjAmfEsHjJQ7/k9YuSIkV57DWA3CjZa139Pg28qYYtH0+6VZQ6Ar X-Received: by 2002:aa7:d886:: with SMTP id u6mr66360973edq.139.1609634132742; Sat, 02 Jan 2021 16:35:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609634132; cv=none; d=google.com; s=arc-20160816; b=vF8DRkaCjrEvmNmRk8tHzSvDErk/h7QU3toD0HYw8PFOOmYVVIfMuOIDp0Y6fGBtak 7x/Nh6s+nd0AbaV91OzO7buo2cMeFNvJJMUr/YcWoyNuuLx3ICeCHFe4tmGkRPBJvkN6 Jj/2OQeeu5A4LNwkx2gZnQsmbl6/z3TmwXLt6lGxsUL6q0+cMhexiyuUfdWwIqI7mqe4 wRDknLoUfOb94pWwXamCSVh5Kna/octZ/wn1Dch7Ip3gKlDQn5FkbZAqcnkRxicTCdLG 8//komnHR5ahTuLl2lJR3HakDCWAsKfYOR77Ow6XdGd6o86l8nux9AFOmR3GzjyCEG6t n10A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:subject:from:message-id:cc:to; bh=vfltOA6qVyrWqpFFBTz5yXH1DCMceedWh4L39WXC3UY=; b=by1Up+I4hiyfVrCwNqWJQd66rs6TzszPsQf/NXjop1HX/xwIizf5R3qF5JViAcmoq9 efGArZZo5M54f+5pD/KPGsWlFoQhgtfex41IGh+UfZ8UqdH7aAt9fkXUOhXlPou8tyqV 92K8SCfhxnOfKD3wcDpsa62bLjUv2aDIKi/6s9gKA3K9WA/UaCcLukzo1Xwqjiv0P60d TAa3vHsczp+JxfQFOeQrLdvvLPmHX6YhvH92NGEl6UD2Ed3Hy6KJ3Y8mpHxrnhrVCgCY K5C960VsUbZMGAayMab9b3hEmT6o1pogBRNfkHxPH4ih+7GwNiy5xA7dod+lb8/wNnW8 OyrQ== 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 e19si28727041edy.553.2021.01.02.16.34.42; Sat, 02 Jan 2021 16:35:32 -0800 (PST) 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 S1726844AbhACAcN (ORCPT + 99 others); Sat, 2 Jan 2021 19:32:13 -0500 Received: from kvm5.telegraphics.com.au ([98.124.60.144]:48486 "EHLO kvm5.telegraphics.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726802AbhACAcM (ORCPT ); Sat, 2 Jan 2021 19:32:12 -0500 Received: by kvm5.telegraphics.com.au (Postfix, from userid 502) id 6401229A96; Sat, 2 Jan 2021 19:31:29 -0500 (EST) To: "David S. Miller" , Jakub Kicinski Cc: "Christophe JAILLET" , "Thomas Bogendoerfer" , "Chris Zankel" , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Message-Id: <529006a7dcd2cd345c2261d4beae0960880f4828.1609633586.git.fthain@telegraphics.com.au> From: Finn Thain Subject: [PATCH v4 net RESEND] net/sonic: Fix some resource leaks in error handling paths Date: Sun, 03 Jan 2021 11:26:26 +1100 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Christophe JAILLET A call to dma_alloc_coherent() is wrapped by sonic_alloc_descriptors(). This is correctly freed in the remove function, but not in the error handling path of the probe function. Fix this by adding the missing dma_free_coherent() call. While at it, rename a label in order to be slightly more informative. Cc: Christophe JAILLET Cc: Thomas Bogendoerfer Cc: Chris Zankel References: commit 10e3cc180e64 ("net/sonic: Fix a resource leak in an error handling path in 'jazz_sonic_probe()'") Fixes: 74f2a5f0ef64 ("xtensa: Add support for the Sonic Ethernet device for the XT2000 board.") Fixes: efcce839360f ("[PATCH] macsonic/jazzsonic network drivers update") Signed-off-by: Christophe JAILLET Signed-off-by: Finn Thain --- Changed since v3: - Update commit log. Changed since v2: - Dropped whitespace change. --- drivers/net/ethernet/natsemi/macsonic.c | 12 ++++++++++-- drivers/net/ethernet/natsemi/xtsonic.c | 7 +++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/natsemi/macsonic.c b/drivers/net/ethernet/natsemi/macsonic.c index 776b7d264dc3..2289e1fe3741 100644 --- a/drivers/net/ethernet/natsemi/macsonic.c +++ b/drivers/net/ethernet/natsemi/macsonic.c @@ -506,10 +506,14 @@ static int mac_sonic_platform_probe(struct platform_device *pdev) err = register_netdev(dev); if (err) - goto out; + goto undo_probe; return 0; +undo_probe: + dma_free_coherent(lp->device, + SIZEOF_SONIC_DESC * SONIC_BUS_SCALE(lp->dma_bitmode), + lp->descriptors, lp->descriptors_laddr); out: free_netdev(dev); @@ -584,12 +588,16 @@ static int mac_sonic_nubus_probe(struct nubus_board *board) err = register_netdev(ndev); if (err) - goto out; + goto undo_probe; nubus_set_drvdata(board, ndev); return 0; +undo_probe: + dma_free_coherent(lp->device, + SIZEOF_SONIC_DESC * SONIC_BUS_SCALE(lp->dma_bitmode), + lp->descriptors, lp->descriptors_laddr); out: free_netdev(ndev); return err; diff --git a/drivers/net/ethernet/natsemi/xtsonic.c b/drivers/net/ethernet/natsemi/xtsonic.c index afa166ff7aef..28d9e98db81a 100644 --- a/drivers/net/ethernet/natsemi/xtsonic.c +++ b/drivers/net/ethernet/natsemi/xtsonic.c @@ -229,11 +229,14 @@ int xtsonic_probe(struct platform_device *pdev) sonic_msg_init(dev); if ((err = register_netdev(dev))) - goto out1; + goto undo_probe1; return 0; -out1: +undo_probe1: + dma_free_coherent(lp->device, + SIZEOF_SONIC_DESC * SONIC_BUS_SCALE(lp->dma_bitmode), + lp->descriptors, lp->descriptors_laddr); release_region(dev->base_addr, SONIC_MEM_SIZE); out: free_netdev(dev); -- 2.26.2