Hi Eric, [auto build test WARNING on net/master]
url: https://github.com/0day-ci/linux/commits/Eric-Dumazet/tcp-dccp-fix-other-lockdep-splats-accessing-ireq_opt/20171024-200038 config: i386-randconfig-x079-201743 (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=i386 All warnings (new ones prefixed by >>): In file included from include/uapi/linux/stddef.h:1:0, from include/linux/stddef.h:4, from include/uapi/linux/posix_types.h:4, from include/uapi/linux/types.h:13, from include/linux/types.h:5, from include/linux/list.h:4, from include/linux/module.h:9, from net//8021q/vlan_dev.c:25: include/net/inet_sock.h: In function 'ireq_opt_deref': include/net/inet_sock.h:138:29: error: 'ireq' is a pointer; did you mean to use '->'? refcount_read(&ireq.req->rsk_refcnt) > 0); ^ -> include/linux/compiler.h:156:30: note: in definition of macro '__trace_if' if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ ^~~~ include/linux/rcupdate.h:292:3: note: in expansion of macro 'if' if (debug_lockdep_rcu_enabled() && !__warned && (c)) { \ ^~ >> include/linux/rcupdate.h:350:2: note: in expansion of macro >> 'RCU_LOCKDEP_WARN' RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_check() usage"); \ ^~~~~~~~~~~~~~~~ include/linux/rcupdate.h:486:2: note: in expansion of macro '__rcu_dereference_check' __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu) ^~~~~~~~~~~~~~~~~~~~~~~ include/net/inet_sock.h:137:9: note: in expansion of macro 'rcu_dereference_check' return rcu_dereference_check(ireq->ireq_opt, ^~~~~~~~~~~~~~~~~~~~~ include/net/inet_sock.h:138:29: error: 'ireq' is a pointer; did you mean to use '->'? refcount_read(&ireq.req->rsk_refcnt) > 0); ^ -> include/linux/compiler.h:156:42: note: in definition of macro '__trace_if' if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ ^~~~ include/linux/rcupdate.h:292:3: note: in expansion of macro 'if' if (debug_lockdep_rcu_enabled() && !__warned && (c)) { \ ^~ >> include/linux/rcupdate.h:350:2: note: in expansion of macro >> 'RCU_LOCKDEP_WARN' RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_check() usage"); \ ^~~~~~~~~~~~~~~~ include/linux/rcupdate.h:486:2: note: in expansion of macro '__rcu_dereference_check' __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu) ^~~~~~~~~~~~~~~~~~~~~~~ include/net/inet_sock.h:137:9: note: in expansion of macro 'rcu_dereference_check' return rcu_dereference_check(ireq->ireq_opt, ^~~~~~~~~~~~~~~~~~~~~ include/net/inet_sock.h:138:29: error: 'ireq' is a pointer; did you mean to use '->'? refcount_read(&ireq.req->rsk_refcnt) > 0); ^ -> include/linux/compiler.h:167:16: note: in definition of macro '__trace_if' ______r = !!(cond); \ ^~~~ include/linux/rcupdate.h:292:3: note: in expansion of macro 'if' if (debug_lockdep_rcu_enabled() && !__warned && (c)) { \ ^~ >> include/linux/rcupdate.h:350:2: note: in expansion of macro >> 'RCU_LOCKDEP_WARN' RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_check() usage"); \ ^~~~~~~~~~~~~~~~ include/linux/rcupdate.h:486:2: note: in expansion of macro '__rcu_dereference_check' __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu) ^~~~~~~~~~~~~~~~~~~~~~~ include/net/inet_sock.h:137:9: note: in expansion of macro 'rcu_dereference_check' return rcu_dereference_check(ireq->ireq_opt, ^~~~~~~~~~~~~~~~~~~~~ vim +/RCU_LOCKDEP_WARN +350 include/linux/rcupdate.h 632ee2001 Paul E. McKenney 2010-02-22 283 4221a9918 Tetsuo Handa 2010-06-26 284 /** f78f5b90c Paul E. McKenney 2015-06-18 285 * RCU_LOCKDEP_WARN - emit lockdep splat if specified condition is met f78f5b90c Paul E. McKenney 2015-06-18 286 * @c: condition to check f78f5b90c Paul E. McKenney 2015-06-18 287 * @s: informative message f78f5b90c Paul E. McKenney 2015-06-18 288 */ f78f5b90c Paul E. McKenney 2015-06-18 289 #define RCU_LOCKDEP_WARN(c, s) \ f78f5b90c Paul E. McKenney 2015-06-18 290 do { \ f78f5b90c Paul E. McKenney 2015-06-18 291 static bool __section(.data.unlikely) __warned; \ f78f5b90c Paul E. McKenney 2015-06-18 @292 if (debug_lockdep_rcu_enabled() && !__warned && (c)) { \ f78f5b90c Paul E. McKenney 2015-06-18 293 __warned = true; \ f78f5b90c Paul E. McKenney 2015-06-18 294 lockdep_rcu_suspicious(__FILE__, __LINE__, s); \ f78f5b90c Paul E. McKenney 2015-06-18 295 } \ f78f5b90c Paul E. McKenney 2015-06-18 296 } while (0) f78f5b90c Paul E. McKenney 2015-06-18 297 50406b98b Paul E. McKenney 2012-01-12 298 #if defined(CONFIG_PROVE_RCU) && !defined(CONFIG_PREEMPT_RCU) 50406b98b Paul E. McKenney 2012-01-12 299 static inline void rcu_preempt_sleep_check(void) 50406b98b Paul E. McKenney 2012-01-12 300 { f78f5b90c Paul E. McKenney 2015-06-18 301 RCU_LOCKDEP_WARN(lock_is_held(&rcu_lock_map), 5cf05ad75 Paul E. McKenney 2012-05-17 302 "Illegal context switch in RCU read-side critical section"); 50406b98b Paul E. McKenney 2012-01-12 303 } 50406b98b Paul E. McKenney 2012-01-12 304 #else /* #ifdef CONFIG_PROVE_RCU */ d0df7a349 Paul E. McKenney 2017-05-03 305 static inline void rcu_preempt_sleep_check(void) { } 50406b98b Paul E. McKenney 2012-01-12 306 #endif /* #else #ifdef CONFIG_PROVE_RCU */ 50406b98b Paul E. McKenney 2012-01-12 307 b3fbab057 Paul E. McKenney 2011-05-24 308 #define rcu_sleep_check() \ b3fbab057 Paul E. McKenney 2011-05-24 309 do { \ 50406b98b Paul E. McKenney 2012-01-12 310 rcu_preempt_sleep_check(); \ f78f5b90c Paul E. McKenney 2015-06-18 311 RCU_LOCKDEP_WARN(lock_is_held(&rcu_bh_lock_map), \ 41f4abd92 Joe Perches 2013-12-05 312 "Illegal context switch in RCU-bh read-side critical section"); \ f78f5b90c Paul E. McKenney 2015-06-18 313 RCU_LOCKDEP_WARN(lock_is_held(&rcu_sched_lock_map), \ 41f4abd92 Joe Perches 2013-12-05 314 "Illegal context switch in RCU-sched read-side critical section"); \ b3fbab057 Paul E. McKenney 2011-05-24 315 } while (0) b3fbab057 Paul E. McKenney 2011-05-24 316 ca5ecddfa Paul E. McKenney 2010-04-28 317 #else /* #ifdef CONFIG_PROVE_RCU */ ca5ecddfa Paul E. McKenney 2010-04-28 318 f78f5b90c Paul E. McKenney 2015-06-18 319 #define RCU_LOCKDEP_WARN(c, s) do { } while (0) b3fbab057 Paul E. McKenney 2011-05-24 320 #define rcu_sleep_check() do { } while (0) ca5ecddfa Paul E. McKenney 2010-04-28 321 ca5ecddfa Paul E. McKenney 2010-04-28 322 #endif /* #else #ifdef CONFIG_PROVE_RCU */ ca5ecddfa Paul E. McKenney 2010-04-28 323 ca5ecddfa Paul E. McKenney 2010-04-28 324 /* ca5ecddfa Paul E. McKenney 2010-04-28 325 * Helper functions for rcu_dereference_check(), rcu_dereference_protected() ca5ecddfa Paul E. McKenney 2010-04-28 326 * and rcu_assign_pointer(). Some of these could be folded into their ca5ecddfa Paul E. McKenney 2010-04-28 327 * callers, but they are left separate in order to ease introduction of ca5ecddfa Paul E. McKenney 2010-04-28 328 * multiple flavors of pointers to match the multiple flavors of RCU ca5ecddfa Paul E. McKenney 2010-04-28 329 * (e.g., __rcu_bh, * __rcu_sched, and __srcu), should this make sense in ca5ecddfa Paul E. McKenney 2010-04-28 330 * the future. ca5ecddfa Paul E. McKenney 2010-04-28 331 */ 53ecfba25 Paul E. McKenney 2010-09-13 332 53ecfba25 Paul E. McKenney 2010-09-13 333 #ifdef __CHECKER__ 53ecfba25 Paul E. McKenney 2010-09-13 334 #define rcu_dereference_sparse(p, space) \ 53ecfba25 Paul E. McKenney 2010-09-13 335 ((void)(((typeof(*p) space *)p) == p)) 53ecfba25 Paul E. McKenney 2010-09-13 336 #else /* #ifdef __CHECKER__ */ 53ecfba25 Paul E. McKenney 2010-09-13 337 #define rcu_dereference_sparse(p, space) 53ecfba25 Paul E. McKenney 2010-09-13 338 #endif /* #else #ifdef __CHECKER__ */ 53ecfba25 Paul E. McKenney 2010-09-13 339 ca5ecddfa Paul E. McKenney 2010-04-28 340 #define __rcu_access_pointer(p, space) \ ca5ecddfa Paul E. McKenney 2010-04-28 341 ({ \ 7d0ae8086 Paul E. McKenney 2015-03-03 342 typeof(*p) *_________p1 = (typeof(*p) *__force)READ_ONCE(p); \ 53ecfba25 Paul E. McKenney 2010-09-13 343 rcu_dereference_sparse(p, space); \ ca5ecddfa Paul E. McKenney 2010-04-28 344 ((typeof(*p) __force __kernel *)(_________p1)); \ ca5ecddfa Paul E. McKenney 2010-04-28 345 }) ca5ecddfa Paul E. McKenney 2010-04-28 346 #define __rcu_dereference_check(p, c, space) \ ca5ecddfa Paul E. McKenney 2010-04-28 347 ({ \ ac59853c0 Pranith Kumar 2014-11-13 348 /* Dependency order vs. p above. */ \ ac59853c0 Pranith Kumar 2014-11-13 349 typeof(*p) *________p1 = (typeof(*p) *__force)lockless_dereference(p); \ f78f5b90c Paul E. McKenney 2015-06-18 @350 RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_check() usage"); \ 53ecfba25 Paul E. McKenney 2010-09-13 351 rcu_dereference_sparse(p, space); \ ac59853c0 Pranith Kumar 2014-11-13 352 ((typeof(*p) __force __kernel *)(________p1)); \ ca5ecddfa Paul E. McKenney 2010-04-28 353 }) ca5ecddfa Paul E. McKenney 2010-04-28 354 #define __rcu_dereference_protected(p, c, space) \ ca5ecddfa Paul E. McKenney 2010-04-28 355 ({ \ f78f5b90c Paul E. McKenney 2015-06-18 356 RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_protected() usage"); \ 53ecfba25 Paul E. McKenney 2010-09-13 357 rcu_dereference_sparse(p, space); \ ca5ecddfa Paul E. McKenney 2010-04-28 358 ((typeof(*p) __force __kernel *)(p)); \ ca5ecddfa Paul E. McKenney 2010-04-28 359 }) 995f14056 Paul E. McKenney 2016-07-01 360 #define rcu_dereference_raw(p) \ 995f14056 Paul E. McKenney 2016-07-01 361 ({ \ 995f14056 Paul E. McKenney 2016-07-01 362 /* Dependency order vs. p above. */ \ 995f14056 Paul E. McKenney 2016-07-01 363 typeof(p) ________p1 = lockless_dereference(p); \ 995f14056 Paul E. McKenney 2016-07-01 364 ((typeof(*p) __force __kernel *)(________p1)); \ 995f14056 Paul E. McKenney 2016-07-01 365 }) ca5ecddfa Paul E. McKenney 2010-04-28 366 :::::: The code at line 350 was first introduced by commit :::::: f78f5b90c4ffa559e400c3919a02236101f29f3f rcu: Rename rcu_lockdep_assert() to RCU_LOCKDEP_WARN() :::::: TO: Paul E. McKenney <paul...@linux.vnet.ibm.com> :::::: CC: Paul E. McKenney <paul...@linux.vnet.ibm.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip