[rcu:rcu/next 28/28] include/linux/compiler.h:536:47: error: dereferencing pointer to incomplete type 'struct drm_master'

From: kbuild test robot
Date: Thu Aug 11 2016 - 14:46:50 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/next
head: a1dff3e407c785ab982810d0b14f829aaf3022b6
commit: a1dff3e407c785ab982810d0b14f829aaf3022b6 [28/28] locking/barriers: suppress sparse warnings in lockless_dereference()
config: i386-randconfig-s0-201632 (attached as .config)
compiler: gcc-6 (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
git checkout a1dff3e407c785ab982810d0b14f829aaf3022b6
# save the attached .config to linux build tree
make ARCH=i386

All error/warnings (new ones prefixed by >>):

In file included from include/linux/linkage.h:4:0,
from include/linux/kernel.h:6,
from drivers/gpu/drm/drm_fb_helper.c:32:
drivers/gpu/drm/drm_fb_helper.c: In function 'drm_fb_helper_is_bound':
>> include/linux/compiler.h:536:47: error: dereferencing pointer to incomplete type 'struct drm_master'
size_t __maybe_unused __size_of_ptr = sizeof(*(p)); \
^~~~
>> drivers/gpu/drm/drm_fb_helper.c:467:6: note: in expansion of macro 'lockless_dereference'
if (lockless_dereference(dev->master))
^~~~~~~~~~~~~~~~~~~~

vim +536 include/linux/compiler.h

530 * The seemingly unused size_t variable is to validate @p is indeed a pointer
531 * type by making sure it can be dereferenced.
532 */
533 #define lockless_dereference(p) \
534 ({ \
535 typeof(p) _________p1 = READ_ONCE(p); \
> 536 size_t __maybe_unused __size_of_ptr = sizeof(*(p)); \
537 smp_read_barrier_depends(); /* Dependency order vs. p above. */ \
538 (_________p1); \
539 })

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: Binary data