Re: [PATCH net-next 0/7] rcu: prevent RCU_LOCKDEP_WARN() from swallowing the condition

From: Paul E. McKenney
Date: Wed Sep 16 2020 - 19:15:09 EST


On Wed, Sep 16, 2020 at 11:45:21AM -0700, Jakub Kicinski wrote:
> Hi!
>
> So I unfolded the RFC patch into smaller chunks and fixed an issue
> in SRCU pointed out by build bot. Build bot has been quiet for
> a day but I'm not 100% sure it's scanning my tree, so let's
> give these patches some ML exposure.
>
> The motivation here is that we run into a unused variable
> warning in networking code because RCU_LOCKDEP_WARN() makes
> its argument disappear with !LOCKDEP / !PROVE_RCU. We marked
> the variable as __maybe_unused, but that's ugly IMHO.
>
> This set makes the relevant function declarations visible to
> the compiler and uses (0 && (condition)) to make the compiler
> remove those calls before linker realizes they are never defined.
>
> I'm tentatively marking these for net-next, but if anyone (Paul?)
> wants to take them into their tree - even better.

I have pulled these into -rcu for review and further testing, thank you!
I of course could not resist editing the commit logs, so please check
to make sure that I did not mess anything up. Just so you know, unless
this is urgent, it is in my v5.11 pile, that is, for the merge window
after next.

If someone else wants to take them, please feel free to add my
Acked-by to the RCU pieces.

Thanx, Paul

> Jakub Kicinski (7):
> sched: un-hide lockdep_tasklist_lock_is_held() for !LOCKDEP
> rcu: un-hide lockdep maps for !LOCKDEP
> net: un-hide lockdep_sock_is_held() for !LOCKDEP
> net: sched: remove broken definitions and un-hide for !LOCKDEP
> srcu: use a more appropriate lockdep helper
> lockdep: provide dummy forward declaration of *_is_held() helpers
> rcu: prevent RCU_LOCKDEP_WARN() from swallowing the condition
>
> include/linux/lockdep.h | 6 ++++++
> include/linux/rcupdate.h | 11 ++++++-----
> include/linux/rcupdate_trace.h | 4 ++--
> include/linux/sched/task.h | 2 --
> include/net/sch_generic.h | 12 ------------
> include/net/sock.h | 2 --
> kernel/rcu/srcutree.c | 2 +-
> 7 files changed, 15 insertions(+), 24 deletions(-)
>
> --
> 2.26.2
>