Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp658587pxf; Wed, 31 Mar 2021 12:39:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwMiPctX4UvcWBYx60BnRiz12/zXyabhMc8xCYk0G09SgL8CnNNBfsDc2wDkarn94W3/I/U X-Received: by 2002:a17:906:3882:: with SMTP id q2mr5332070ejd.540.1617219558856; Wed, 31 Mar 2021 12:39:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617219558; cv=none; d=google.com; s=arc-20160816; b=m7P/reVhVbeQ/YBW6fRJslwSM6tjcKPayBgGSeHJ4U7eKViFCqp7gWuMJvk4qXIumE P/xwRoP3EhwOOv85oQYO/MqwoLtGLsIasyc28EF3uYs2qS48+M5482GJzeBvnqq8vrH+ vgIJqLnZ3Gb467/bQC5rWsIKieUShE6IToFnYOEW2+KJdIhgo81BPb1tzm8VxqGKzvTZ ITQaokrr3iDGLS9EHrOOXkOTMHY180MKjFA9Cm0WlJfKiYvaxpGkCm1x9Gg6XDn3FTDz TpUgyFvrCIPcfuP8juJul7Ugz9ZulqY/YW2QxJ4H8tvP9/tADz+i4Sc0DHS1Ch9HUUUJ FdPg== 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:to:from:subject; bh=6/SzHqwbcXgstr1B1ch6aNta4o3o4kPj5IaQ6CntFRM=; b=dJQ3jmBmRIyMj29sH7vhkDiLx3djMbEN2zUkwGcsS77vx0C2mlR+IScT938btCq4pB 3bfCmgvXeAN7Wt/B7sHCW93SEBYqsCKFnOzFxQsbyzfj/ltd0BHYPZ+EyhTlSzzoh4yx NRlxo54OlealuKoIOwAWthL0DkK/bYA8Rkgv+KZKB5f/Le/xtuTdR7CLnH5SW880TOai emU770PoyGsiScpuocKhLeHCODPg0vywMk1+K5WB/D/Dkg29gHfEkWMnvKPHsSMmBbKa mSfUxs+ErndKbp4bLiPzOPZwkxhZRwFTUgH/xG1O8F6bPFJB8g9AOotHs2TVlLL00Z6S MqcA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id qw16si2504454ejb.673.2021.03.31.12.38.55; Wed, 31 Mar 2021 12:39:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-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-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236268AbhCaThB (ORCPT + 99 others); Wed, 31 Mar 2021 15:37:01 -0400 Received: from mail.kernel.org ([198.145.29.99]:44544 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235975AbhCaTgg (ORCPT ); Wed, 31 Mar 2021 15:36:36 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5F02D6101E; Wed, 31 Mar 2021 19:36:36 +0000 (UTC) Subject: [PATCH v1 6/8] xprtrdma: Improve locking around rpcrdma_rep creation From: Chuck Lever To: linux-rdma@vger.kernel.org, linux-nfs@vger.kernel.org Date: Wed, 31 Mar 2021 15:36:35 -0400 Message-ID: <161721939561.515226.1183996972792305822.stgit@manet.1015granger.net> In-Reply-To: <161721926778.515226.9805598788670386587.stgit@manet.1015granger.net> References: <161721926778.515226.9805598788670386587.stgit@manet.1015granger.net> User-Agent: StGit/0.23-29-ga622f1 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Serialize the use of the rb_all_reps list during rep creation and destruction. Signed-off-by: Chuck Lever --- net/sunrpc/xprtrdma/verbs.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c index b68fc81a78fb..2fde805edb64 100644 --- a/net/sunrpc/xprtrdma/verbs.c +++ b/net/sunrpc/xprtrdma/verbs.c @@ -956,13 +956,11 @@ static void rpcrdma_reqs_reset(struct rpcrdma_xprt *r_xprt) rpcrdma_req_reset(req); } -/* No locking needed here. This function is called only by the - * Receive completion handler. - */ static noinline struct rpcrdma_rep *rpcrdma_rep_create(struct rpcrdma_xprt *r_xprt, bool temp) { + struct rpcrdma_buffer *buf = &r_xprt->rx_buf; struct rpcrdma_rep *rep; rep = kzalloc(sizeof(*rep), GFP_KERNEL); @@ -989,7 +987,10 @@ struct rpcrdma_rep *rpcrdma_rep_create(struct rpcrdma_xprt *r_xprt, rep->rr_recv_wr.sg_list = &rep->rr_rdmabuf->rg_iov; rep->rr_recv_wr.num_sge = 1; rep->rr_temp = temp; - list_add(&rep->rr_all, &r_xprt->rx_buf.rb_all_reps); + + spin_lock(&buf->rb_lock); + list_add(&rep->rr_all, &buf->rb_all_reps); + spin_unlock(&buf->rb_lock); return rep; out_free_regbuf: