Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2712005pxv; Sun, 11 Jul 2021 23:30:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw5/i/RY6Bs9d5627AN2Cx/MDxm4LQMhKJnRoOfALH9q6y9NC2zfiq0HszoO53GKi1PguKb X-Received: by 2002:aa7:c1ca:: with SMTP id d10mr11940745edp.107.1626071453309; Sun, 11 Jul 2021 23:30:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626071453; cv=none; d=google.com; s=arc-20160816; b=u1QKGgK+1nlNpfgkXfWhTgPiQO9UjNN+cTM4sKYfst3J2/UJDp6iIHhKnhfWyrgrsk tFNZq7d0p7fJTgEBE4eOpJZ/RDJ9oHX2vySTq/t5hGjVVXNkPcOFjji5fkSCWNlVMqXp 0cfGT2UV2McrTdKDmkIkdbTQIWzmP8NOWK0cmIAb8+a11VbVHdx4AMXrE8rDXh1E3yIz tgkVD1263XiA+DSJEoeyiBpBRP6HqY/PFkj3f37UWdJWtcLgyem6awFttJ5aackCcHVB VZs161ggQim/ccSrUykuD3X9GKbqkk1oofAQZEytdJe1IRbW4Z2gxdTgMrDf9A74LBXV dBoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Q7BtB0VqhAnu4e9nESFVuCmOT3+e/8GDeK1I2L7sH4Q=; b=DSE0wTJtlw51r7ZsmALjMJJOducCOF3qOLnyZa+vT3Ry5rkx0LvVxBbm8YdXQLOe6S uTCbWVqztWgmkjGCtK8C9mrhrIboFYUe+MtFeBuSWmUAGoeHBaXig7k8uRkUBzvJF42q c8kQC6umHyIj/9TUGNsoCvojDxp9OpYoQ1ouykNPfWSkkxNP2851Cd/6AgIgVUt9/yDG gkGPXdlVaq3aY5lK9b1QtZlYO0PY3fJjFe59kaUECqmNMCMYKtD1wIwOxMgtvqZBe4vz 7qvBl54wm0UROAfZs7SwQHKPImXAa+ScnUKIwoYWH6s3MPFa5leTQKZUgsMXesOfnbEj OEbQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=LpZUAOVx; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z16si21919562edm.47.2021.07.11.23.30.30; Sun, 11 Jul 2021 23:30:53 -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=@linuxfoundation.org header.s=korg header.b=LpZUAOVx; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237025AbhGLGc2 (ORCPT + 99 others); Mon, 12 Jul 2021 02:32:28 -0400 Received: from mail.kernel.org ([198.145.29.99]:45894 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231796AbhGLG1w (ORCPT ); Mon, 12 Jul 2021 02:27:52 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 351E561176; Mon, 12 Jul 2021 06:24:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626071062; bh=elGwtORI2akq7wv+zMLThIEO7Hpn7kctPpnt+j/OysA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LpZUAOVx/VMpE+o7/yDV0rP4vlzqMHFVcW0JSyQhTANcYdJfVvqatPsCrU8qWy2kD kNty4kLFeycYka7u32OV9Q3PdepY29eGwTksPZFn4ItDxhwA4Ol5EXounveebdkwow LmfPZ9mWtEvOThG4axnOdgJ05eJoc4iI6kFPXtGI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Zhu Yanjun , Bob Pearson , Jason Gunthorpe , Sasha Levin Subject: [PATCH 5.4 215/348] RDMA/rxe: Fix qp reference counting for atomic ops Date: Mon, 12 Jul 2021 08:09:59 +0200 Message-Id: <20210712060730.082583958@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060659.886176320@linuxfoundation.org> References: <20210712060659.886176320@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bob Pearson [ Upstream commit 15ae1375ea91ae2dee6f12d71a79d8c0a10a30bf ] Currently the rdma_rxe driver attempts to protect atomic responder resources by taking a reference to the qp which is only freed when the resource is recycled for a new read or atomic operation. This means that in normal circumstances there is almost always an extra qp reference once an atomic operation has been executed which prevents cleaning up the qp and associated pd and cqs when the qp is destroyed. This patch removes the call to rxe_add_ref() in send_atomic_ack() and the call to rxe_drop_ref() in free_rd_atomic_resource(). If the qp is destroyed while a peer is retrying an atomic op it will cause the operation to fail which is acceptable. Link: https://lore.kernel.org/r/20210604230558.4812-1-rpearsonhpe@gmail.com Reported-by: Zhu Yanjun Fixes: 86af61764151 ("IB/rxe: remove unnecessary skb_clone") Signed-off-by: Bob Pearson Signed-off-by: Jason Gunthorpe Signed-off-by: Sasha Levin --- drivers/infiniband/sw/rxe/rxe_qp.c | 1 - drivers/infiniband/sw/rxe/rxe_resp.c | 2 -- 2 files changed, 3 deletions(-) diff --git a/drivers/infiniband/sw/rxe/rxe_qp.c b/drivers/infiniband/sw/rxe/rxe_qp.c index d427a343c09f..53166b9ae67e 100644 --- a/drivers/infiniband/sw/rxe/rxe_qp.c +++ b/drivers/infiniband/sw/rxe/rxe_qp.c @@ -152,7 +152,6 @@ static void free_rd_atomic_resources(struct rxe_qp *qp) void free_rd_atomic_resource(struct rxe_qp *qp, struct resp_res *res) { if (res->type == RXE_ATOMIC_MASK) { - rxe_drop_ref(qp); kfree_skb(res->atomic.skb); } else if (res->type == RXE_READ_MASK) { if (res->read.mr) diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c index c4a8195bf670..186152bf7951 100644 --- a/drivers/infiniband/sw/rxe/rxe_resp.c +++ b/drivers/infiniband/sw/rxe/rxe_resp.c @@ -993,8 +993,6 @@ static int send_atomic_ack(struct rxe_qp *qp, struct rxe_pkt_info *pkt, goto out; } - rxe_add_ref(qp); - res = &qp->resp.resources[qp->resp.res_head]; free_rd_atomic_resource(qp, res); rxe_advance_resp_resource(qp); -- 2.30.2