Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2828993pxv; Mon, 12 Jul 2021 02:59:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyEShfS3hO+3Pw5fWpEuDGde7R6vEnW8+x5qVdZp2ZRQq3cIbGxT2BIrwB9Q6GW8Hfqlzpf X-Received: by 2002:a92:509:: with SMTP id q9mr1582640ile.239.1626083943807; Mon, 12 Jul 2021 02:59:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626083943; cv=none; d=google.com; s=arc-20160816; b=Z4rSMNME8KWWTmEXDQgwX1iFEHv9dnvsi7146sfrC19gPUfcEXvjLuPWncO68GKyk2 ZTa9a8JzJUcsGQd+7CUUKxh6axOIguCLoUVcPlJOYJ1YzowpOCnr3dZKn6AMaHfdAIcG XDfTV/tFok22vbeqYc92oxK1qe3A9YPVshQW9sP6JDhaf0R56D2dWtNJTN/kevZsgifj Gr2Y4S8lpXTo2p5BEQZEO1R8AZPsFidcSe24U4gfrHkYeNpzTmJrLDLyXi888jNCK1ew /jbplUlXQZOcwAVHcE+bRWsdRWAe3gggOtCnxyW7E3aaHJrD+G62DHgEVFsKyWIM4s+/ VV6w== 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=Ca6a5YeQSFBcJDSfT/VMG5YghXQoW9jnGd8J1Ttnq6I=; b=y6ytj47kVWw7iJpCUa1vcGr7q1NJC/+6yhJ9m6nC/+/lUCosdMs8djRsEuJVCi4BQp yKQysdWk6iPoiz3LXnRnjHyh/9wkx1gzqAMgtxsRZt2ke2Yrroq/TrPBofHuo+l7Vr95 qT6hPxz7XHAMKcQLlOz7Oh6YieBQQc1VQZnG/dWxlnN7WEkkNPl0B18t8g4AkRVlwwyo OM2WmN2Bbv9nm7vrXPFR5H1jsSmkiGZqbJXjmtLS+PvHJ2tk0LOt04MwOvjZQAx0/gwF /8GgPyM4b2N0q5//wZEOQxWhzh8J//Jx/5g/quvFxQmdvmI3BnRHDXrFJe1E4uKaQGNT aCJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=BMinQAlY; 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 t11si952087jan.92.2021.07.12.02.58.52; Mon, 12 Jul 2021 02:59:03 -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=BMinQAlY; 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 S240621AbhGLHDU (ORCPT + 99 others); Mon, 12 Jul 2021 03:03:20 -0400 Received: from mail.kernel.org ([198.145.29.99]:41760 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237321AbhGLGqJ (ORCPT ); Mon, 12 Jul 2021 02:46:09 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9BFBA610A6; Mon, 12 Jul 2021 06:41:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626072114; bh=6ffR9pWe5ZhUI/fbXsRaNlGSmTXT1y3+3FtlNi8qfp0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BMinQAlYL6+dqhmGycMjKe3Cs5NcQ4J7bfLa/la7d0oNvXIzLsR5VvMmuKQ82o5i9 f93VnwxPeX66CNgizCNojjIppfqhL1OJNQX38YVQx0iHpxfatCFRdLMVkuPJMsp10/ Y45HTjbUujTPKxJuwgwVq9d5KoohU+66J7mE9bTY= 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.10 360/593] RDMA/rxe: Fix qp reference counting for atomic ops Date: Mon, 12 Jul 2021 08:08:40 +0200 Message-Id: <20210712060926.061006511@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060843.180606720@linuxfoundation.org> References: <20210712060843.180606720@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 1e716fe7014c..a1b79015e6f2 100644 --- a/drivers/infiniband/sw/rxe/rxe_qp.c +++ b/drivers/infiniband/sw/rxe/rxe_qp.c @@ -125,7 +125,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 c7e3b6a4af38..83c03212099a 100644 --- a/drivers/infiniband/sw/rxe/rxe_resp.c +++ b/drivers/infiniband/sw/rxe/rxe_resp.c @@ -966,8 +966,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