Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5968855ybl; Tue, 10 Dec 2019 14:40:02 -0800 (PST) X-Google-Smtp-Source: APXvYqzfdUBJfK226PcCQuD7YHreUs79QjBG8vWndC09+Sl6lxetO2F0jTku87f0z5AQu3dH/FXV X-Received: by 2002:a54:4086:: with SMTP id i6mr327758oii.65.1576017602463; Tue, 10 Dec 2019 14:40:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576017602; cv=none; d=google.com; s=arc-20160816; b=L0AgqnZ+XpdbXSFvXElcCJ8UTcjmoAtcZpIQdkNLWMSbXSm0Y/DgtkZSSI/8yiaAya kdh3nE6jZvC0mwkgOT97ZlkoGJksb0s1yDoQzpVvqE8cj1IR18Yyhd4bR1oCSdUMQTew ordJwsn60bd3EBE45zPgjHzaL6eyt6lOdzq2/3zA1n1hXyobEHSEI7Sgl2367USp5UvT hSWX0FmRVgRvR0v/rPS7sFDKrjVW/Il76/KsC336JHKHtHVJhj3qmqdp//hnvANo1uHM Y0k4Divyu5sQESSzZlH2tiQmzJBOSGMQ4Fg9Wxd9aXJqUiX7js0ss9EAsO95ycbhNA9/ P0VA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:reply-to:message-id :subject:cc:to:from:date:dkim-signature; bh=k1535lfJBD972cdflopZWafMVSPtax8Kd4cWmZsHSIE=; b=WwpLKzlf0DIIbTOXPriwCNcL0X0sY3s4//DZEX+me83mZUs2kC8mwbdfbpm0KFwFgY xYa94eQmR67GIN4ZZF9hdLPwBD5SKO7JWCiN0sAiHA6SCoSFVfbkTrelD1mEGgJdZPDZ A4dMg3/Ma3rwKJU9qYsNem/Yt1nktVcPZIcBVCIUsHKwh4yOflqdx8tjdbzxlgzkeF0Z L3ZYrIZ8BK5zhDIZ1wwrm4PCMVfL4mNcAO1L/9D3rpAgRs1oOm+M19ygLLwW9JxMCpW1 MA4fDS295ipq7vb6HlkX7d6ut6+2453cY5E0y3dpQxLr6x79kI0ocdseb8CxU8+fF8Z6 upSw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=CIdHPCv7; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q18si2852435otc.189.2019.12.10.14.39.50; Tue, 10 Dec 2019 14:40:02 -0800 (PST) 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=CIdHPCv7; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729943AbfLJWi3 (ORCPT + 99 others); Tue, 10 Dec 2019 17:38:29 -0500 Received: from mail.kernel.org ([198.145.29.99]:59774 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729279AbfLJWi1 (ORCPT ); Tue, 10 Dec 2019 17:38:27 -0500 Received: from paulmck-ThinkPad-P72.home (unknown [199.201.64.140]) (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 6B00C2077B; Tue, 10 Dec 2019 22:38:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576017506; bh=FZWcj2uubErXZMXLQWTdtQCV61a2rTeZ4M7n9iQJZWM=; h=Date:From:To:Cc:Subject:Reply-To:References:In-Reply-To:From; b=CIdHPCv75hoxrLSG5mf3J7CFnStYJucNShYdzH3Ok01S2/G/jzAsvjNsIO7ao2Wzq mcwEx4ATmZQS2ZO8qbh+zxJjQWQXs65EDu7Y/w8n9xwr9iJ6t4pLzSkVbQf3nGA4Xm 8qC0Vv+CoMejsHy4TZnUv3mwRXlKCNR3Cd5JeGsM= Received: by paulmck-ThinkPad-P72.home (Postfix, from userid 1000) id DF8D2352276D; Tue, 10 Dec 2019 14:38:25 -0800 (PST) Date: Tue, 10 Dec 2019 14:38:25 -0800 From: "Paul E. McKenney" To: Ying Xue Cc: linux-kernel@vger.kernel.org, jon.maloy@ericsson.com, davem@davemloft.net, netdev@vger.kernel.org, tipc-discussion@lists.sourceforge.net, torvalds@linux-foundation.org, mingo@kernel.org, kernel-team@fb.com Subject: Re: [PATCH net/tipc] Replace rcu_swap_protected() with rcu_replace_pointer() Message-ID: <20191210223825.GS2889@paulmck-ThinkPad-P72> Reply-To: paulmck@kernel.org References: <20191210033146.GA32522@paulmck-ThinkPad-P72> <0e565b68-ece1-5ae6-bb5d-710163fb8893@windriver.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <0e565b68-ece1-5ae6-bb5d-710163fb8893@windriver.com> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Dec 10, 2019 at 10:36:59PM +0800, Ying Xue wrote: > On 12/10/19 11:31 AM, Paul E. McKenney wrote: > > This commit replaces the use of rcu_swap_protected() with the more > > intuitively appealing rcu_replace_pointer() as a step towards removing > > rcu_swap_protected(). > > > > Link: https://lore.kernel.org/lkml/CAHk-=wiAsJLw1egFEE=Z7-GGtM6wcvtyytXZA1+BHqta4gg6Hw@mail.gmail.com/ > > Reported-by: Linus Torvalds > > Reported-by: kbuild test robot > > Signed-off-by: Paul E. McKenney > > Cc: Jon Maloy > > Cc: Ying Xue > > Cc: "David S. Miller" > > Cc: > > Cc: > > > > diff --git a/net/tipc/crypto.c b/net/tipc/crypto.c > > index 990a872..64cf831 100644 > > --- a/net/tipc/crypto.c > > +++ b/net/tipc/crypto.c > > @@ -258,7 +258,7 @@ static char *tipc_key_change_dump(struct tipc_key old, struct tipc_key new, > > rcu_dereference_protected((rcu_ptr), lockdep_is_held(lock)) > > > > #define tipc_aead_rcu_swap(rcu_ptr, ptr, lock) \ > > - rcu_swap_protected((rcu_ptr), (ptr), lockdep_is_held(lock)) > > + rcu_replace_pointer((rcu_ptr), (ptr), lockdep_is_held(lock)) > > (ptr) = rcu_replace_pointer((rcu_ptr), (ptr), lockdep_is_held(lock)) > > > > > #define tipc_aead_rcu_replace(rcu_ptr, ptr, lock) \ > > do { \ > > @@ -1189,7 +1189,7 @@ static bool tipc_crypto_key_try_align(struct tipc_crypto *rx, u8 new_pending) > > > > /* Move passive key if any */ > > if (key.passive) { > > - tipc_aead_rcu_swap(rx->aead[key.passive], tmp2, &rx->lock); > > + tmp2 = rcu_replace_pointer(rx->aead[key.passive], tmp2, &rx->lock); > > tipc_aead_rcu_swap() is only called here in TIPC module. If we use > rcu_replace_pointer() to switch pointers instead of calling > tipc_aead_rcu_swap() macro, I think we should completely remove > tipc_aead_rcu_swap(). Good catch, thank you! How about the following instead? Thanx, Paul ------------------------------------------------------------------------ commit 4ee8e2c68b076867b7a5af82a38010fffcab611c Author: Paul E. McKenney Date: Mon Dec 9 19:13:45 2019 -0800 net/tipc: Replace rcu_swap_protected() with rcu_replace_pointer() This commit replaces the use of rcu_swap_protected() with the more intuitively appealing rcu_replace_pointer() as a step towards removing rcu_swap_protected(). Link: https://lore.kernel.org/lkml/CAHk-=wiAsJLw1egFEE=Z7-GGtM6wcvtyytXZA1+BHqta4gg6Hw@mail.gmail.com/ Reported-by: Linus Torvalds Reported-by: kbuild test robot Signed-off-by: Paul E. McKenney Cc: Jon Maloy Cc: Ying Xue Cc: "David S. Miller" Cc: Cc: diff --git a/net/tipc/crypto.c b/net/tipc/crypto.c index 990a872..978d2db 100644 --- a/net/tipc/crypto.c +++ b/net/tipc/crypto.c @@ -257,9 +257,6 @@ static char *tipc_key_change_dump(struct tipc_key old, struct tipc_key new, #define tipc_aead_rcu_ptr(rcu_ptr, lock) \ rcu_dereference_protected((rcu_ptr), lockdep_is_held(lock)) -#define tipc_aead_rcu_swap(rcu_ptr, ptr, lock) \ - rcu_swap_protected((rcu_ptr), (ptr), lockdep_is_held(lock)) - #define tipc_aead_rcu_replace(rcu_ptr, ptr, lock) \ do { \ typeof(rcu_ptr) __tmp = rcu_dereference_protected((rcu_ptr), \ @@ -1189,7 +1186,7 @@ static bool tipc_crypto_key_try_align(struct tipc_crypto *rx, u8 new_pending) /* Move passive key if any */ if (key.passive) { - tipc_aead_rcu_swap(rx->aead[key.passive], tmp2, &rx->lock); + tmp2 = rcu_replace_pointer(rx->aead[key.passive], tmp2, &rx->lock); x = (key.passive - key.pending + new_pending) % KEY_MAX; new_passive = (x <= 0) ? x + KEY_MAX : x; }