Received: by 2002:a17:90a:1609:0:0:0:0 with SMTP id n9csp846231pja; Wed, 1 Apr 2020 09:45:10 -0700 (PDT) X-Google-Smtp-Source: ADFU+vtHCki2Mis+ACa6fEdUxuubVm07nIPjk1wfaEaUBcUGBXe48nxjigfhaV3u8QgF/UVrkzm1 X-Received: by 2002:a9d:1a3:: with SMTP id e32mr18307135ote.206.1585759510058; Wed, 01 Apr 2020 09:45:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585759510; cv=none; d=google.com; s=arc-20160816; b=0dPYYYaJtCn2xtdJ9H5pDs508XhW6tcU170cq0TKO3StcupE5+aYbgC7nTc8MywANl kfEQ/qPf1dou6qWMDbvzGpNKWHZ2URLsO+8OO8Fvv6wmkCkse87I0/JkZKQp11G+KbqV kOixKc9sbto2KkA15FVwhZoCEjl39gma8anJsh8C9tlaykq6Q5S4t98o+KI6LWi1+gWF 2SRS5MrPcyyqnemlR6CsQ5yZjsBAO8MvwMVg1mCtXMGUmQV1YcS8qWMTr3Bz6sQO4ecY 1mFdDpn3G2kydFFa6n2EN7m5x1E4ASXgkeLNtWtiCqr+fpRAlkBSMwECBw439mOdLqov MjwQ== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=7yT2fUnHIp8F1OKmqHiLsyqawzD8wvHfcFruhocfu/g=; b=MbG/ZefEYSNaisyunFhsb/JwDrK0I9kDHzYVFLt7nMkxYZ0mT/SS6tinhHdMS10IxO 8v5j2w6nxpd6rbS+M+wGv1H3Jv34uIplpvp+rBY7JXlggSBkcUDKmSYIxa06JXu0Ydjr aVugVU/3PWofwH94JJvSJqr5qceyW7s81R9Ed+GZ18WdiCQ1KukBKoH7E4Wjt9JuTZNk VewOflDNaZtONWZeuZ7i/A27e+HGicyxbPnqYJIMZFY+OERT1lcyM9e2Czk3jXYk+La0 NVwfqaZZ84ohIUkNGjqOAK6TR64M1XcZq4nVhGbrEoXwXG7gA7S73nz6M98yKgDenVRm 4l+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pMKMiAS8; 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 a12si1016647otf.272.2020.04.01.09.44.57; Wed, 01 Apr 2020 09:45:10 -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; dkim=pass header.i=@kernel.org header.s=default header.b=pMKMiAS8; 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 S2389612AbgDAQnV (ORCPT + 99 others); Wed, 1 Apr 2020 12:43:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:44090 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389607AbgDAQnT (ORCPT ); Wed, 1 Apr 2020 12:43:19 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 506C9206F8; Wed, 1 Apr 2020 16:43:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585759398; bh=NawbuyTVM8YNV6WtPzNC5TWsO3Kns5RAMv/5SI2fH4A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pMKMiAS82DDmXemO4Xnau+rFRb1RVb66EbTmoZ6VkqgzgRxKhkmG61y+vJwcXc8Cy dbgieYXKRuBvHpiO7rneaOJz1CVs6TAvK8dJYrJ+ghOziAXoaT2fBMX1LLLy0gxaVc zgkmuPBG6LcJ6I/FOy/OpjzRGdAW8/7SJilaMeMg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Edwin Peer , Michael Chan , "David S. Miller" Subject: [PATCH 4.14 067/148] bnxt_en: fix memory leaks in bnxt_dcbnl_ieee_getets() Date: Wed, 1 Apr 2020 18:17:39 +0200 Message-Id: <20200401161600.044598431@linuxfoundation.org> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200401161552.245876366@linuxfoundation.org> References: <20200401161552.245876366@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Edwin Peer [ Upstream commit 62d4073e86e62e316bea2c53e77db10418fd5dd7 ] The allocated ieee_ets structure goes out of scope without being freed, leaking memory. Appropriate result codes should be returned so that callers do not rely on invalid data passed by reference. Also cache the ETS config retrieved from the device so that it doesn't need to be freed. The balance of the code was clearly written with the intent of having the results of querying the hardware cached in the device structure. The commensurate store was evidently missed though. Fixes: 7df4ae9fe855 ("bnxt_en: Implement DCBNL to support host-based DCBX.") Signed-off-by: Edwin Peer Signed-off-by: Michael Chan Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c @@ -387,24 +387,26 @@ static int bnxt_dcbnl_ieee_getets(struct { struct bnxt *bp = netdev_priv(dev); struct ieee_ets *my_ets = bp->ieee_ets; + int rc; ets->ets_cap = bp->max_tc; if (!my_ets) { - int rc; - if (bp->dcbx_cap & DCB_CAP_DCBX_HOST) return 0; my_ets = kzalloc(sizeof(*my_ets), GFP_KERNEL); if (!my_ets) - return 0; + return -ENOMEM; rc = bnxt_hwrm_queue_cos2bw_qcfg(bp, my_ets); if (rc) - return 0; + goto error; rc = bnxt_hwrm_queue_pri2cos_qcfg(bp, my_ets); if (rc) - return 0; + goto error; + + /* cache result */ + bp->ieee_ets = my_ets; } ets->cbs = my_ets->cbs; @@ -413,6 +415,9 @@ static int bnxt_dcbnl_ieee_getets(struct memcpy(ets->tc_tsa, my_ets->tc_tsa, sizeof(ets->tc_tsa)); memcpy(ets->prio_tc, my_ets->prio_tc, sizeof(ets->prio_tc)); return 0; +error: + kfree(my_ets); + return rc; } static int bnxt_dcbnl_ieee_setets(struct net_device *dev, struct ieee_ets *ets)