Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2021596pxa; Mon, 3 Aug 2020 05:36:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw9LzZllBz+Cn+iMwQGuBVPKSGkbW1hf+xp9wEl6qeubIxKXJS5dblQb/3P+gwpB70nbCC4 X-Received: by 2002:a05:6402:6cc:: with SMTP id n12mr16227046edy.258.1596458172536; Mon, 03 Aug 2020 05:36:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596458172; cv=none; d=google.com; s=arc-20160816; b=LX176MtcNRyFw9wOLkbqIgvb+2Rz38r57Q6Q6OkGnoPsp24V1JBSWvOB4I0ywIryS+ KzIb5+gzoF23++BJW/w8r2MsvTYbW8kA/5qe6VA/Bxz7NtH65JPb7k1ka3Q9vZhAvqDX QJ/vNqcVBK3lYujBqG/SBAGSqNzzsl817cDqQT2Q9MedvaEbd8WBuFPeTsWGlmh3nRKM uwpOwggVE7RQT/Up6N8gCt88oA/JgYwSBQZkrTIZwghoPwINsK9j1gFYYNFwt45zTAUN QEQUu4bF4Ozagxzut/rkjcTBlWpEP4zwgOLmq+p64jXmHIz4ErzCWmvZdbqlq7QD4LI0 1d2Q== 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=OV+JGoPyZujTl154f0fFULMD7pnmLvt3102ehHqAwS0=; b=bEhV5wzJo2YOlB5Rm/aEfkdVb00WRIXzqd5xBVkM8lF0UUGY4hTp8t3WlbtKkz4tVG j0ZB4tbEG+gCitxseYPSz5RlXprB3OgDu8IWqhfzilSz5mddocKc9bG00kksxaDsdEiL gWFGEjo2i51j4OwLz/zDipfnPL7i0iIj3HX6iVY/fVo0AN980XAxc2uldnNA1BqXlYum wx0hqAwV0To37p8vWhLm2J4I9AUuCiG82JnG/Ea5Re1Xi/l4F+2JDKbhPYbZkb8kNnkG uNaIV/Mc7jWAC7kZa33lQbADw0m/C6lXxuySNVdbWNORTAL+PlQ7yeC8OoagVLzL2gMT J2cw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Uk8n9Qrh; 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 gr2si9573059ejb.492.2020.08.03.05.35.50; Mon, 03 Aug 2020 05:36:12 -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; dkim=pass header.i=@kernel.org header.s=default header.b=Uk8n9Qrh; 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 S1727920AbgHCMcu (ORCPT + 99 others); Mon, 3 Aug 2020 08:32:50 -0400 Received: from mail.kernel.org ([198.145.29.99]:60734 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728639AbgHCMco (ORCPT ); Mon, 3 Aug 2020 08:32:44 -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 24AED22B4E; Mon, 3 Aug 2020 12:32:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1596457962; bh=lgqVgdhfHN1pC/MsK8xRtUILegRzQ9O9MBKodkMxdxI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Uk8n9Qrhk0nHx9GPZCzuDG94H8vt4nsOhRCNfX1mJhOPQcBef/QzE5FVI2KLtkKIG z/9gHnxQmkWavd5qIt+qyF4qQRePqfdVp5uUrgckJwLLwbM/Ra5t/7GuX+JkWgx05B dL5weY4sQ+Tdr+uNX7fL9YqS5KAKhevSFScZoVN4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xin Xiong , Xiyu Yang , Xin Tan , Saeed Mahameed , Sasha Levin Subject: [PATCH 4.19 45/56] net/mlx5e: fix bpf_prog reference count leaks in mlx5e_alloc_rq Date: Mon, 3 Aug 2020 14:20:00 +0200 Message-Id: <20200803121852.516928244@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200803121850.306734207@linuxfoundation.org> References: <20200803121850.306734207@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: Xin Xiong [ Upstream commit e692139e6af339a1495ef401b2d95f7f9d1c7a44 ] The function invokes bpf_prog_inc(), which increases the reference count of a bpf_prog object "rq->xdp_prog" if the object isn't NULL. The refcount leak issues take place in two error handling paths. When either mlx5_wq_ll_create() or mlx5_wq_cyc_create() fails, the function simply returns the error code and forgets to drop the reference count increased earlier, causing a reference count leak of "rq->xdp_prog". Fix this issue by jumping to the error handling path err_rq_wq_destroy while either function fails. Fixes: 422d4c401edd ("net/mlx5e: RX, Split WQ objects for different RQ types") Signed-off-by: Xin Xiong Signed-off-by: Xiyu Yang Signed-off-by: Xin Tan Signed-off-by: Saeed Mahameed Signed-off-by: Sasha Levin --- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c index 7e6706333fa8d..51edc507b7b5d 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -519,7 +519,7 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c, err = mlx5_wq_ll_create(mdev, &rqp->wq, rqc_wq, &rq->mpwqe.wq, &rq->wq_ctrl); if (err) - return err; + goto err_rq_wq_destroy; rq->mpwqe.wq.db = &rq->mpwqe.wq.db[MLX5_RCV_DBR]; @@ -564,7 +564,7 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c, err = mlx5_wq_cyc_create(mdev, &rqp->wq, rqc_wq, &rq->wqe.wq, &rq->wq_ctrl); if (err) - return err; + goto err_rq_wq_destroy; rq->wqe.wq.db = &rq->wqe.wq.db[MLX5_RCV_DBR]; -- 2.25.1