On Wed, May 15 2019, Jakub Kicinski wrote: > Since the bit_spin_lock() operations don't actually dereference > the pointer, it's fine to forcefully drop the RCU annotation. > This fixes 7 sparse warnings per include site. > > Fixes: 8f0db018006a ("rhashtable: use bit_spin_locks to protect hash bucket.") > Signed-off-by: Jakub Kicinski > Reviewed-by: Simon Horman Hi, sorry for not responding to your initial post, but I'm otherwise engaged this week and cannot give it any real time. I don't object to this patch, but I'll try to have a proper look next week, if only to find out how I didn't get the warnings, as I was testing with sparse. Thanks, NeilBrown > --- > include/linux/rhashtable.h | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/include/linux/rhashtable.h b/include/linux/rhashtable.h > index f7714d3b46bd..bea1e0440ab4 100644 > --- a/include/linux/rhashtable.h > +++ b/include/linux/rhashtable.h > @@ -325,27 +325,27 @@ static inline struct rhash_lock_head __rcu **rht_bucket_insert( > */ > > static inline void rht_lock(struct bucket_table *tbl, > - struct rhash_lock_head **bkt) > + struct rhash_lock_head __rcu **bkt) > { > local_bh_disable(); > - bit_spin_lock(0, (unsigned long *)bkt); > + bit_spin_lock(0, (unsigned long __force *)bkt); > lock_map_acquire(&tbl->dep_map); > } > > static inline void rht_lock_nested(struct bucket_table *tbl, > - struct rhash_lock_head **bucket, > + struct rhash_lock_head __rcu **bkt, > unsigned int subclass) > { > local_bh_disable(); > - bit_spin_lock(0, (unsigned long *)bucket); > + bit_spin_lock(0, (unsigned long __force *)bkt); > lock_acquire_exclusive(&tbl->dep_map, subclass, 0, NULL, _THIS_IP_); > } > > static inline void rht_unlock(struct bucket_table *tbl, > - struct rhash_lock_head **bkt) > + struct rhash_lock_head __rcu **bkt) > { > lock_map_release(&tbl->dep_map); > - bit_spin_unlock(0, (unsigned long *)bkt); > + bit_spin_unlock(0, (unsigned long __force *)bkt); > local_bh_enable(); > } > > -- > 2.21.0