Re: [PATCH] treewide: Rename rcu_dereference_raw_notrace to _check
On Fri, Jul 12, 2019 at 08:01:07AM -0700, Paul E. McKenney wrote: > On Thu, Jul 11, 2019 at 04:45:41PM -0400, Joel Fernandes (Google) wrote: > > The rcu_dereference_raw_notrace() API name is confusing. > > It is equivalent to rcu_dereference_raw() except that it also does > > sparse pointer checking. > > > > There are only a few users of rcu_dereference_raw_notrace(). This > > patches renames all of them to be rcu_dereference_raw_check with the > > "check" indicating sparse checking. > > > > Signed-off-by: Joel Fernandes (Google) > > I queued this, but reworked the commit log and fixed a couple of > irritating checkpatch issues that were in the original code. > Does this work for you? Thanks, yes it looks good to me. thanks, - Joel > > Thanx, Paul > > > > commit bd5c0fea6016c90cf7a9eb0435cd0c373dfdac2f > Author: Joel Fernandes (Google) > Date: Thu Jul 11 16:45:41 2019 -0400 > > treewide: Rename rcu_dereference_raw_notrace() to _check() > > The rcu_dereference_raw_notrace() API name is confusing. It is equivalent > to rcu_dereference_raw() except that it also does sparse pointer checking. > > There are only a few users of rcu_dereference_raw_notrace(). This patches > renames all of them to be rcu_dereference_raw_check() with the "_check()" > indicating sparse checking. > > Signed-off-by: Joel Fernandes (Google) > [ paulmck: Fix checkpatch warnings about parentheses. ] > Signed-off-by: Paul E. McKenney > > diff --git a/Documentation/RCU/Design/Requirements/Requirements.html > b/Documentation/RCU/Design/Requirements/Requirements.html > index f04c467e55c5..467251f7fef6 100644 > --- a/Documentation/RCU/Design/Requirements/Requirements.html > +++ b/Documentation/RCU/Design/Requirements/Requirements.html > @@ -2514,7 +2514,7 @@ disabled across the entire RCU read-side critical > section. > > It is possible to use tracing on RCU code, but tracing itself > uses RCU. > -For this reason, rcu_dereference_raw_notrace() > +For this reason, rcu_dereference_raw_check() > is provided for use by tracing, which avoids the destructive > recursion that could otherwise ensue. > This API is also used by virtualization in some architectures, > diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h > b/arch/powerpc/include/asm/kvm_book3s_64.h > index 21b1ed5df888..53388a311967 100644 > --- a/arch/powerpc/include/asm/kvm_book3s_64.h > +++ b/arch/powerpc/include/asm/kvm_book3s_64.h > @@ -546,7 +546,7 @@ static inline void note_hpte_modification(struct kvm *kvm, > */ > static inline struct kvm_memslots *kvm_memslots_raw(struct kvm *kvm) > { > - return rcu_dereference_raw_notrace(kvm->memslots[0]); > + return rcu_dereference_raw_check(kvm->memslots[0]); > } > > extern void kvmppc_mmu_debugfs_init(struct kvm *kvm); > diff --git a/include/linux/rculist.h b/include/linux/rculist.h > index e91ec9ddcd30..932296144131 100644 > --- a/include/linux/rculist.h > +++ b/include/linux/rculist.h > @@ -622,7 +622,7 @@ static inline void hlist_add_behind_rcu(struct hlist_node > *n, > * as long as the traversal is guarded by rcu_read_lock(). > */ > #define hlist_for_each_entry_rcu(pos, head, member) \ > - for (pos = hlist_entry_safe > (rcu_dereference_raw(hlist_first_rcu(head)),\ > + for (pos = hlist_entry_safe(rcu_dereference_raw(hlist_first_rcu(head)),\ > typeof(*(pos)), member);\ > pos;\ > pos = hlist_entry_safe(rcu_dereference_raw(hlist_next_rcu(\ > @@ -642,10 +642,10 @@ static inline void hlist_add_behind_rcu(struct > hlist_node *n, > * not do any RCU debugging or tracing. > */ > #define hlist_for_each_entry_rcu_notrace(pos, head, member) > \ > - for (pos = hlist_entry_safe > (rcu_dereference_raw_notrace(hlist_first_rcu(head)),\ > + for (pos = > hlist_entry_safe(rcu_dereference_raw_check(hlist_first_rcu(head)),\ > typeof(*(pos)), member);\ > pos;\ > - pos = > hlist_entry_safe(rcu_dereference_raw_notrace(hlist_next_rcu(\ > + pos = > hlist_entry_safe(rcu_dereference_raw_check(hlist_next_rcu(\ > &(pos)->member)), typeof(*(pos)), member)) > > /** > diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h > index 0c9b92799abc..e5161e377ad4 100644 > --- a/include/linux/rcupdate.h > +++ b/include/linux/rcupdate.h > @@ -478,7 +478,7 @@ do { > \ > * The no-tracing version of rcu_dereference_raw() must not call > * rcu_read_lock_held(). > */ > -#define rcu_dereference_raw_notrace(p)
Re: [PATCH] treewide: Rename rcu_dereference_raw_notrace to _check
On Thu, Jul 11, 2019 at 04:45:41PM -0400, Joel Fernandes (Google) wrote: > The rcu_dereference_raw_notrace() API name is confusing. > It is equivalent to rcu_dereference_raw() except that it also does > sparse pointer checking. > > There are only a few users of rcu_dereference_raw_notrace(). This > patches renames all of them to be rcu_dereference_raw_check with the > "check" indicating sparse checking. > > Signed-off-by: Joel Fernandes (Google) I queued this, but reworked the commit log and fixed a couple of irritating checkpatch issues that were in the original code. Does this work for you? Thanx, Paul commit bd5c0fea6016c90cf7a9eb0435cd0c373dfdac2f Author: Joel Fernandes (Google) Date: Thu Jul 11 16:45:41 2019 -0400 treewide: Rename rcu_dereference_raw_notrace() to _check() The rcu_dereference_raw_notrace() API name is confusing. It is equivalent to rcu_dereference_raw() except that it also does sparse pointer checking. There are only a few users of rcu_dereference_raw_notrace(). This patches renames all of them to be rcu_dereference_raw_check() with the "_check()" indicating sparse checking. Signed-off-by: Joel Fernandes (Google) [ paulmck: Fix checkpatch warnings about parentheses. ] Signed-off-by: Paul E. McKenney diff --git a/Documentation/RCU/Design/Requirements/Requirements.html b/Documentation/RCU/Design/Requirements/Requirements.html index f04c467e55c5..467251f7fef6 100644 --- a/Documentation/RCU/Design/Requirements/Requirements.html +++ b/Documentation/RCU/Design/Requirements/Requirements.html @@ -2514,7 +2514,7 @@ disabled across the entire RCU read-side critical section. It is possible to use tracing on RCU code, but tracing itself uses RCU. -For this reason, rcu_dereference_raw_notrace() +For this reason, rcu_dereference_raw_check() is provided for use by tracing, which avoids the destructive recursion that could otherwise ensue. This API is also used by virtualization in some architectures, diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h index 21b1ed5df888..53388a311967 100644 --- a/arch/powerpc/include/asm/kvm_book3s_64.h +++ b/arch/powerpc/include/asm/kvm_book3s_64.h @@ -546,7 +546,7 @@ static inline void note_hpte_modification(struct kvm *kvm, */ static inline struct kvm_memslots *kvm_memslots_raw(struct kvm *kvm) { - return rcu_dereference_raw_notrace(kvm->memslots[0]); + return rcu_dereference_raw_check(kvm->memslots[0]); } extern void kvmppc_mmu_debugfs_init(struct kvm *kvm); diff --git a/include/linux/rculist.h b/include/linux/rculist.h index e91ec9ddcd30..932296144131 100644 --- a/include/linux/rculist.h +++ b/include/linux/rculist.h @@ -622,7 +622,7 @@ static inline void hlist_add_behind_rcu(struct hlist_node *n, * as long as the traversal is guarded by rcu_read_lock(). */ #define hlist_for_each_entry_rcu(pos, head, member)\ - for (pos = hlist_entry_safe (rcu_dereference_raw(hlist_first_rcu(head)),\ + for (pos = hlist_entry_safe(rcu_dereference_raw(hlist_first_rcu(head)),\ typeof(*(pos)), member);\ pos;\ pos = hlist_entry_safe(rcu_dereference_raw(hlist_next_rcu(\ @@ -642,10 +642,10 @@ static inline void hlist_add_behind_rcu(struct hlist_node *n, * not do any RCU debugging or tracing. */ #define hlist_for_each_entry_rcu_notrace(pos, head, member) \ - for (pos = hlist_entry_safe (rcu_dereference_raw_notrace(hlist_first_rcu(head)),\ + for (pos = hlist_entry_safe(rcu_dereference_raw_check(hlist_first_rcu(head)),\ typeof(*(pos)), member);\ pos;\ - pos = hlist_entry_safe(rcu_dereference_raw_notrace(hlist_next_rcu(\ + pos = hlist_entry_safe(rcu_dereference_raw_check(hlist_next_rcu(\ &(pos)->member)), typeof(*(pos)), member)) /** diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 0c9b92799abc..e5161e377ad4 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -478,7 +478,7 @@ do { \ * The no-tracing version of rcu_dereference_raw() must not call * rcu_read_lock_held(). */ -#define rcu_dereference_raw_notrace(p) __rcu_dereference_check((p), 1, __rcu) +#define rcu_dereference_raw_check(p) __rcu_dereference_check((p), 1, __rcu) /** * rcu_dereference_protected() - fetch RCU pointer when updates prevented diff --git a/kernel/trace/ftrace_internal.h b/kernel/trace/ftrace_internal.h index 0515a2096f90..0456e0a3dab1 100644 ---
Re: [PATCH] treewide: Rename rcu_dereference_raw_notrace to _check
On Thu, Jul 11, 2019 at 4:45 PM Joel Fernandes (Google) wrote: > > The rcu_dereference_raw_notrace() API name is confusing. > It is equivalent to rcu_dereference_raw() except that it also does > sparse pointer checking. > > There are only a few users of rcu_dereference_raw_notrace(). This > patches renames all of them to be rcu_dereference_raw_check with the > "check" indicating sparse checking. > > Signed-off-by: Joel Fernandes (Google) There also these _notrace things but I am Ok with leaving them alone for now: hash_for_each_possible_rcu_notrace hlist_for_each_entry_rcu_notrace - Joel
[PATCH] treewide: Rename rcu_dereference_raw_notrace to _check
The rcu_dereference_raw_notrace() API name is confusing. It is equivalent to rcu_dereference_raw() except that it also does sparse pointer checking. There are only a few users of rcu_dereference_raw_notrace(). This patches renames all of them to be rcu_dereference_raw_check with the "check" indicating sparse checking. Signed-off-by: Joel Fernandes (Google) --- Previous discussion is here: https://lore.kernel.org/linuxppc-dev/20190528200014.gv28...@linux.ibm.com/T/ Documentation/RCU/Design/Requirements/Requirements.html | 2 +- arch/powerpc/include/asm/kvm_book3s_64.h| 2 +- include/linux/rculist.h | 4 ++-- include/linux/rcupdate.h| 2 +- kernel/trace/ftrace_internal.h | 8 kernel/trace/trace.c| 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Documentation/RCU/Design/Requirements/Requirements.html b/Documentation/RCU/Design/Requirements/Requirements.html index f04c467e55c5..467251f7fef6 100644 --- a/Documentation/RCU/Design/Requirements/Requirements.html +++ b/Documentation/RCU/Design/Requirements/Requirements.html @@ -2514,7 +2514,7 @@ disabled across the entire RCU read-side critical section. It is possible to use tracing on RCU code, but tracing itself uses RCU. -For this reason, rcu_dereference_raw_notrace() +For this reason, rcu_dereference_raw_check() is provided for use by tracing, which avoids the destructive recursion that could otherwise ensue. This API is also used by virtualization in some architectures, diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h index 21b1ed5df888..53388a311967 100644 --- a/arch/powerpc/include/asm/kvm_book3s_64.h +++ b/arch/powerpc/include/asm/kvm_book3s_64.h @@ -546,7 +546,7 @@ static inline void note_hpte_modification(struct kvm *kvm, */ static inline struct kvm_memslots *kvm_memslots_raw(struct kvm *kvm) { - return rcu_dereference_raw_notrace(kvm->memslots[0]); + return rcu_dereference_raw_check(kvm->memslots[0]); } extern void kvmppc_mmu_debugfs_init(struct kvm *kvm); diff --git a/include/linux/rculist.h b/include/linux/rculist.h index e91ec9ddcd30..10aab1d2d471 100644 --- a/include/linux/rculist.h +++ b/include/linux/rculist.h @@ -642,10 +642,10 @@ static inline void hlist_add_behind_rcu(struct hlist_node *n, * not do any RCU debugging or tracing. */ #define hlist_for_each_entry_rcu_notrace(pos, head, member) \ - for (pos = hlist_entry_safe (rcu_dereference_raw_notrace(hlist_first_rcu(head)),\ + for (pos = hlist_entry_safe (rcu_dereference_raw_check(hlist_first_rcu(head)),\ typeof(*(pos)), member);\ pos;\ - pos = hlist_entry_safe(rcu_dereference_raw_notrace(hlist_next_rcu(\ + pos = hlist_entry_safe(rcu_dereference_raw_check(hlist_next_rcu(\ &(pos)->member)), typeof(*(pos)), member)) /** diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 0c9b92799abc..e5161e377ad4 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -478,7 +478,7 @@ do { \ * The no-tracing version of rcu_dereference_raw() must not call * rcu_read_lock_held(). */ -#define rcu_dereference_raw_notrace(p) __rcu_dereference_check((p), 1, __rcu) +#define rcu_dereference_raw_check(p) __rcu_dereference_check((p), 1, __rcu) /** * rcu_dereference_protected() - fetch RCU pointer when updates prevented diff --git a/kernel/trace/ftrace_internal.h b/kernel/trace/ftrace_internal.h index 0515a2096f90..0456e0a3dab1 100644 --- a/kernel/trace/ftrace_internal.h +++ b/kernel/trace/ftrace_internal.h @@ -6,22 +6,22 @@ /* * Traverse the ftrace_global_list, invoking all entries. The reason that we - * can use rcu_dereference_raw_notrace() is that elements removed from this list + * can use rcu_dereference_raw_check() is that elements removed from this list * are simply leaked, so there is no need to interact with a grace-period - * mechanism. The rcu_dereference_raw_notrace() calls are needed to handle + * mechanism. The rcu_dereference_raw_check() calls are needed to handle * concurrent insertions into the ftrace_global_list. * * Silly Alpha and silly pointer-speculation compiler optimizations! */ #define do_for_each_ftrace_op(op, list)\ - op = rcu_dereference_raw_notrace(list); \ + op = rcu_dereference_raw_check(list); \ do /* * Optimized for just a single item in the list (as that is the normal case). */ #define while_for_each_ftrace_op(op) \ - while (likely(op =