Messages in this thread | | | Date | Mon, 25 Mar 2019 09:12:55 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH] lockdep: avoid bogus clang warning |
| |
On Mon, 25 Mar 2019 13:57:57 +0100 Arnd Bergmann <arnd@arndb.de> wrote:
> When lockdep is enabled, and -Wuninitialized warnings are enabled, > clang produces a silly warning for every file we compile: > > In file included from kernel/sched/fair.c:23: > kernel/sched/sched.h:1094:15: error: variable 'cookie' is uninitialized when used here [-Werror,-Wuninitialized] > rf->cookie = lockdep_pin_lock(&rq->lock); > ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Sad it warns as struct pin_cookie is of size zero. But hey.
> include/linux/lockdep.h:474:60: note: expanded from macro 'lockdep_pin_lock' > #define lockdep_pin_lock(l) ({ struct pin_cookie cookie; cookie; }) > ^~~~~~ > kernel/sched/sched.h:1094:15: note: variable 'cookie' is declared here > include/linux/lockdep.h:474:34: note: expanded from macro 'lockdep_pin_lock' > #define lockdep_pin_lock(l) ({ struct pin_cookie cookie; cookie; }) > ^ > As the 'struct pin_cookie' structure is empty in this configuration, > there is no need to initialize it for correctness, but it also > does not hurt to set it to an empty structure, so do that to > avoid the warning. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > include/linux/lockdep.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h > index 79c3873d58ac..31d7549933eb 100644 > --- a/include/linux/lockdep.h > +++ b/include/linux/lockdep.h > @@ -471,7 +471,7 @@ struct pin_cookie { }; > > #define NIL_COOKIE (struct pin_cookie){ } > > -#define lockdep_pin_lock(l) ({ struct pin_cookie cookie; cookie; }) > +#define lockdep_pin_lock(l) ({ struct pin_cookie cookie = {}; cookie; })
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
-- Steve
> #define lockdep_repin_lock(l, c) do { (void)(l); (void)(c); } while (0) > #define lockdep_unpin_lock(l, c) do { (void)(l); (void)(c); } while (0) >
| |