include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-09-24 Thread kbuild test robot
Hi Ian,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   cd4175b11685b11c40e31a03e05084cc212b0649
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle pointers to 
arrays better in container_of()
date:   2 months ago
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
# save the attached .config to linux build tree
make.cross ARCH=ia64 

All errors (new ones prefixed by >>):

   In file included from drivers/clocksource/timer-of.c:25:0:
   drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
from drivers/clocksource/timer-of.c:18:
   drivers/clocksource/timer-of.h: In function 'to_timer_of':
>> include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete 
>> type 'struct clock_event_device'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~
--
   In file included from drivers//clocksource/timer-of.c:25:0:
   drivers//clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
            from drivers//clocksource/timer-of.c:18:
   drivers//clocksource/timer-of.h: In function 'to_timer_of':
>> include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete 
>> type 'struct clock_event_device'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers//clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~

vim +860 include/linux/kernel.h

   843  
   844  
   845  /*
   846   * swap - swap value of @a and @b
   847   */
   848  #define swap(a, b) \
   849  do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
   850  
   851  /**
   852   * container_of - cast a member of a structure out to the containing 
structure
   853   * @ptr:the pointer to the member.
   854   * @type:   the type of the container struct this i

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-08-05 Thread kbuild test robot
Hi Ian,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   0fdd951c9bef93637d5af036851e7a5632fbd6c3
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle pointers to 
arrays better in container_of()
date:   3 weeks ago
config: ia64-allyesconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget 
https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
# save the attached .config to linux build tree
make.cross ARCH=ia64 

All errors (new ones prefixed by >>):

   In file included from drivers//clocksource/timer-of.c:25:0:
   drivers//clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
from drivers//clocksource/timer-of.c:18:
   drivers//clocksource/timer-of.h: In function 'to_timer_of':
>> include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete 
>> type 'struct clock_event_device'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers//clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~
--
   In file included from drivers/clocksource/timer-of.c:25:0:
   drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
        from drivers/clocksource/timer-of.c:18:
   drivers/clocksource/timer-of.h: In function 'to_timer_of':
>> include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete 
>> type 'struct clock_event_device'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~

vim +860 include/linux/kernel.h

   843  
   844  
   845  /*
   846   * swap - swap value of @a and @b
   847   */
   848  #define swap(a, b) \
   849  do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
   850  
   851  /**
   852   * container_of - cast a member of a structure out to the containing 
structure
   853   * @ptr:the pointer to the member.
   854   * @type:   the type of the container struct this is embedded in.
   855   * 

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-07-22 Thread kbuild test robot
Hi Ian,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   96080f697786e0a30006fcbcc5b53f350fcb3e9f
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle pointers to 
arrays better in container_of()
date:   10 days ago
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget 
https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
# save the attached .config to linux build tree
make.cross ARCH=ia64 

All errors (new ones prefixed by >>):

   In file included from drivers/clocksource/timer-of.c:25:0:
   drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
from drivers/clocksource/timer-of.c:18:
   drivers/clocksource/timer-of.h: In function 'to_timer_of':
>> include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete 
>> type 'struct clock_event_device'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~
--
   In file included from drivers//clocksource/timer-of.c:25:0:
   drivers//clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
            from drivers//clocksource/timer-of.c:18:
   drivers//clocksource/timer-of.h: In function 'to_timer_of':
>> include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete 
>> type 'struct clock_event_device'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers//clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~

vim +860 include/linux/kernel.h

   843  
   844  
   845  /*
   846   * swap - swap value of @a and @b
   847   */
   848  #define swap(a, b) \
   849  do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
   850  
   851  /**
   852   * container_of - cast a member of a structure out to the containing 
structure
   853   * @ptr:the pointer to the member.
   854   * @type:   the type of the container struct this is embedded in.
   855   * 

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-07-30 Thread kbuild test robot
Hi Ian,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   0a07b238e5f488b459b6113a62e06b6aab017f71
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle pointers to 
arrays better in container_of()
date:   3 weeks ago
config: ia64-allyesconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget 
https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
# save the attached .config to linux build tree
make.cross ARCH=ia64 

All errors (new ones prefixed by >>):

   In file included from drivers/clocksource/timer-of.c:25:0:
   drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
from drivers/clocksource/timer-of.c:18:
   drivers/clocksource/timer-of.h: In function 'to_timer_of':
>> include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete 
>> type 'struct clock_event_device'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~

vim +860 include/linux/kernel.h

   843  
   844  
   845  /*
   846   * swap - swap value of @a and @b
   847   */
   848  #define swap(a, b) \
   849  do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
   850  
   851  /**
   852   * container_of - cast a member of a structure out to the containing 
structure
   853   * @ptr:the pointer to the member.
   854   * @type:   the type of the container struct this is embedded in.
   855   * @member: the name of the member within the struct.
   856   *
   857   */
   858  #define container_of(ptr, type, member) ({  
\
   859  void *__mptr = (void *)(ptr);   
\
 > 860  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   
 > \
   861   !__same_type(*(ptr), void),
\
   862   "pointer type mismatch in container_of()");
\
   863  ((type *)(__mptr - offsetof(type, member))); })
   864  

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


.config.gz
Description: application/gzip


include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-07-15 Thread kbuild test robot
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   5771a8c08880cdca3bfb4a3fc6d309d6bba20877
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle pointers to 
arrays better in container_of()
date:   3 days ago
config: ia64-allyesconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget 
https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
# save the attached .config to linux build tree
make.cross ARCH=ia64 

All errors (new ones prefixed by >>):

   In file included from drivers/clocksource/timer-of.c:25:0:
   drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
from drivers/clocksource/timer-of.c:18:
   drivers/clocksource/timer-of.h: In function 'to_timer_of':
>> include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete 
>> type 'struct clock_event_device'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~
--
   In file included from drivers//clocksource/timer-of.c:25:0:
   drivers//clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
            from drivers//clocksource/timer-of.c:18:
   drivers//clocksource/timer-of.h: In function 'to_timer_of':
>> include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete 
>> type 'struct clock_event_device'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers//clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~

vim +860 include/linux/kernel.h

   843  
   844  
   845  /*
   846   * swap - swap value of @a and @b
   847   */
   848  #define swap(a, b) \
   849  do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
   850  
   851  /**
   852   * container_of - cast a member of a structure out to the containing 
structure
   853   * @ptr:the pointer to the member.
   854   * @type:   the type of the container struct this is embedded in.
   855   * @member: the name of the member withi

Re: include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-09-25 Thread Ian Abbott

On 24/09/17 09:26, kbuild test robot wrote:

Hi Ian,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   cd4175b11685b11c40e31a03e05084cc212b0649
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle pointers to 
arrays better in container_of()
date:   2 months ago
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
 wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
 chmod +x ~/bin/make.cross
 git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
 # save the attached .config to linux build tree
 make.cross ARCH=ia64

All errors (new ones prefixed by >>):

In file included from drivers/clocksource/timer-of.c:25:0:
drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
  struct clock_event_device clkevt;
^~


That's the first compile error - 'struct clock_event_device' is 
incomplete because 'CONFIG_GENERIC_CLOCKEVENTS' is not defined.



In file included from include/linux/err.h:4:0,
 from include/linux/clk.h:15,
 from drivers/clocksource/timer-of.c:18:
drivers/clocksource/timer-of.h: In function 'to_timer_of':

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 
'struct clock_event_device'

  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~
include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
   bool __cond = !(condition);\
   ^
include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
  ^~~
include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
 #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
 ^~
include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
  ^~~~
include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~
drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
  return container_of(clkevt, struct timer_of, clkevt);
 ^~~~
--
In file included from drivers//clocksource/timer-of.c:25:0:
drivers//clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
  struct clock_event_device clkevt;
^~
In file included from include/linux/err.h:4:0,
     from include/linux/clk.h:15,
     from drivers//clocksource/timer-of.c:18:
drivers//clocksource/timer-of.h: In function 'to_timer_of':

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 
'struct clock_event_device'

  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~
include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
   bool __cond = !(condition);\
   ^
include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
  ^~~
include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
 #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
 ^~
include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
  ^~~~
include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~
drivers//clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
  return container_of(clkevt, struct timer_of, clkevt);
 ^~~~

vim +860 include/linux/kernel.h

843 
844 
845 /*
846  * swap - swap value of @a and @b
847  */
848 #define swap(a, b) \
849 do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
850 
8

Re: include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-09-25 Thread Ian Abbott

[Sorry for the repost.  I forgot to Cc the people I said I was Cc'ing!]

On 24/09/17 09:26, kbuild test robot wrote:

Hi Ian,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   cd4175b11685b11c40e31a03e05084cc212b0649
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle pointers to 
arrays better in container_of()
date:   2 months ago
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
 wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
 chmod +x ~/bin/make.cross
 git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
 # save the attached .config to linux build tree
 make.cross ARCH=ia64

All errors (new ones prefixed by >>):

In file included from drivers/clocksource/timer-of.c:25:0:
drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
  struct clock_event_device clkevt;
^~


That's the first compile error - 'struct clock_event_device' is 
incomplete because 'CONFIG_GENERIC_CLOCKEVENTS' is not defined.



In file included from include/linux/err.h:4:0,
 from include/linux/clk.h:15,
 from drivers/clocksource/timer-of.c:18:
drivers/clocksource/timer-of.h: In function 'to_timer_of':

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 
'struct clock_event_device'

  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~
include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
   bool __cond = !(condition);\
   ^
include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
  ^~~
include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
 #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
 ^~
include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
  ^~~~
include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~
drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
  return container_of(clkevt, struct timer_of, clkevt);
 ^~~~
--
In file included from drivers//clocksource/timer-of.c:25:0:
drivers//clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
  struct clock_event_device clkevt;
^~
In file included from include/linux/err.h:4:0,
     from include/linux/clk.h:15,
         from drivers//clocksource/timer-of.c:18:
    drivers//clocksource/timer-of.h: In function 'to_timer_of':

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 
'struct clock_event_device'

  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~
include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
   bool __cond = !(condition);\
   ^
include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
  ^~~
include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
 #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
 ^~
include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
  ^~~~
include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~
drivers//clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
  return container_of(clkevt, struct timer_of, clkevt);
 ^~~~

vim +860 include/linux/kernel.h

843 
844 
845 /*
846  * swap - swap value of @a and @b
847  */
848 #define swap(a, b) \
849   

Re: include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-09-25 Thread Daniel Lezcano
On 25/09/2017 17:15, Ian Abbott wrote:
> [Sorry for the repost.  I forgot to Cc the people I said I was Cc'ing!]

Hi Ian,

[ ... ]


> On 24/09/17 09:26, kbuild test robot wrote:
>> Hi Ian,
>>
>> FYI, the error/warning still remains.
>>
>> tree:  
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
>> head:   cd4175b11685b11c40e31a03e05084cc212b0649
>> commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle
>> pointers to arrays better in container_of()
>> date:   2 months ago
>> config: ia64-allmodconfig (attached as .config)
>> compiler: ia64-linux-gcc (GCC) 6.2.0
>> reproduce:
>>  wget
>> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
>> -O ~/bin/make.cross
>>  chmod +x ~/bin/make.cross
>>  git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
>>  # save the attached .config to linux build tree
>>  make.cross ARCH=ia64
>>
>> All errors (new ones prefixed by >>):
>>
>>     In file included from drivers/clocksource/timer-of.c:25:0:
>>     drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has
>> incomplete type
>>   struct clock_event_device clkevt;

[ ... ]

> 
> Cc'ing Daniel Lezcano and Thomas Gleixner, since this seems to be a
> problem with configurations selecting 'TIMER_OF' even though
> 'GENERIC_CLOCKEVENTS' is not selected.
> 
> There was a recent-ish commit 599dc457c79b
> ("clocksource/drivers/Kconfig: Fix CLKSRC_PISTACHIO dependencies") to
> address this problem for one particular clocksource driver, but some
> other clocksource drivers seem to share the same problem.  There are
> several clocksource config options in "drivers/clocksource/Kconfig" that
> select 'TIMER_OF' without depending on 'GENERIC_CLOCKEVENTS'.  Some of
> them are only manually selectable when 'COMPILE_TEST' is selected.  This
> particular failure seems to be at least partly due to 'ARMV7M_SYSTICK'
> getting selected.

Thanks for Cc'ing. This issue is currently in the way to be fixed.

https://patchwork.kernel.org/patch/9939191/

  -- Daniel

-- 
  Linaro.org │ Open source software for ARM SoCs

Follow Linaro:   Facebook |
 Twitter |
 Blog



Re: include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-07-24 Thread Ian Abbott

On 23/07/17 05:56, kbuild test robot wrote:

Hi Ian,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   96080f697786e0a30006fcbcc5b53f350fcb3e9f
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle pointers to 
arrays better in container_of()
date:   10 days ago
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
 wget 
https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
 chmod +x ~/bin/make.cross
 git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
 # save the attached .config to linux build tree
 make.cross ARCH=ia64

All errors (new ones prefixed by >>):

In file included from drivers/clocksource/timer-of.c:25:0:
drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
  struct clock_event_device clkevt;
^~
In file included from include/linux/err.h:4:0,
 from include/linux/clk.h:15,
 from drivers/clocksource/timer-of.c:18:
drivers/clocksource/timer-of.h: In function 'to_timer_of':

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 
'struct clock_event_device'

  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~
include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
   bool __cond = !(condition);\
   ^
include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
  ^~~
include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
 #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
 ^~
include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
  ^~~~
include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~
drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
  return container_of(clkevt, struct timer_of, clkevt);
 ^~~~
--
In file included from drivers//clocksource/timer-of.c:25:0:
drivers//clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
  struct clock_event_device clkevt;
^~
In file included from include/linux/err.h:4:0,
 from include/linux/clk.h:15,
             from drivers//clocksource/timer-of.c:18:
drivers//clocksource/timer-of.h: In function 'to_timer_of':

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 
'struct clock_event_device'

  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~
include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
   bool __cond = !(condition);\
   ^
include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
  ^~~
include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
 #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
 ^~
include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
  ^~~~
include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
  BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~
drivers//clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
  return container_of(clkevt, struct timer_of, clkevt);
 ^~~~

vim +860 include/linux/kernel.h

843 
844 
845 /*
846  * swap - swap value of @a and @b
847  */
848 #define swap(a, b) \
849 do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
850 
851 /**
852  * container_of - cast a member of a structure out to the containing 
structure
853  * @ptr:the pointer to the member.
8

Re: include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-07-16 Thread Ian Abbott

On 16/07/17 04:24, kbuild test robot wrote:

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   5771a8c08880cdca3bfb4a3fc6d309d6bba20877
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle pointers to 
arrays better in container_of()
date:   3 days ago
config: ia64-allyesconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget 
https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
# save the attached .config to linux build tree
make.cross ARCH=ia64

All errors (new ones prefixed by >>):

   In file included from drivers/clocksource/timer-of.c:25:0:
   drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
from drivers/clocksource/timer-of.c:18:
   drivers/clocksource/timer-of.h: In function 'to_timer_of':

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 
'struct clock_event_device'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~
--
   In file included from drivers//clocksource/timer-of.c:25:0:
   drivers//clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete 
type
 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
            from drivers//clocksource/timer-of.c:18:
   drivers//clocksource/timer-of.h: In function 'to_timer_of':

include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 
'struct clock_event_device'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'
  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro '__same_type'
 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers//clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'
 return container_of(clkevt, struct timer_of, clkevt);
^~~~

vim +860 include/linux/kernel.h

   843  
   844  
   845  /*
   846   * swap - swap value of @a and @b
   847   */
   848  #define swap(a, b) \
   849  do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
   850  
   851  /**
   852   * container_of - cast a member of a structure out to the containing 
structure
   853   * @ptr:the pointer to the member.
   854   * @type:   the type of the container struct this is embedded in.
   855   * @member: the name of the 

Re: include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-07-16 Thread Ian Abbott

On 16/07/17 15:14, Ian Abbott wrote:

On 16/07/17 14:50, Ian Abbott wrote:

On 16/07/17 04:24, kbuild test robot wrote:
tree: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master

head:   5771a8c08880cdca3bfb4a3fc6d309d6bba20877
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle 
pointers to arrays better in container_of()

date:   3 days ago
config: ia64-allyesconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget 
https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross 
-O ~/bin/make.cross

chmod +x ~/bin/make.cross
git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
# save the attached .config to linux build tree
make.cross ARCH=ia64

All errors (new ones prefixed by >>):

   In file included from drivers/clocksource/timer-of.c:25:0:
   drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has 
incomplete type

 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
from drivers/clocksource/timer-of.c:18:
   drivers/clocksource/timer-of.h: In function 'to_timer_of':
include/linux/kernel.h:860:32: error: dereferencing pointer to 
incomplete type 'struct clock_event_device'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'

  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, 
__LINE__)

 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'

#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 
'BUILD_BUG_ON_MSG'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro 
'__same_type'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'

 return container_of(clkevt, struct timer_of, clkevt);
^~~~
--
   In file included from drivers//clocksource/timer-of.c:25:0:
   drivers//clocksource/timer-of.h:35:28: error: field 'clkevt' has 
incomplete type

 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
            from drivers//clocksource/timer-of.c:18:
   drivers//clocksource/timer-of.h: In function 'to_timer_of':
include/linux/kernel.h:860:32: error: dereferencing pointer to 
incomplete type 'struct clock_event_device'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'

  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, 
__LINE__)

 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'

#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 
'BUILD_BUG_ON_MSG'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro 
'__same_type'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers//clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'

 return container_of(clkevt, struct timer_of, clkevt);
^~~~

vim +860 include/linux/kernel.h

   843
   844
   845/*
   846 * swap - swap value of @a and @b
   847 */
   848#define swap(a, b) \
   849do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } 
while (0)

   850
   851/**
   852 * container_of - cast a member of a structure out to the 
containing structure

   853 * @ptr:the pointer to the member.
   854 * @type:th

Re: include/linux/kernel.h:860:32: error: dereferencing pointer to incomplete type 'struct clock_event_device'

2017-07-16 Thread Ian Abbott

On 16/07/17 14:50, Ian Abbott wrote:

On 16/07/17 04:24, kbuild test robot wrote:
tree:   
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master

head:   5771a8c08880cdca3bfb4a3fc6d309d6bba20877
commit: c7acec713d14c6ce8a20154f9dfda258d6bcad3b kernel.h: handle 
pointers to arrays better in container_of()

date:   3 days ago
config: ia64-allyesconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget 
https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross 
-O ~/bin/make.cross

chmod +x ~/bin/make.cross
git checkout c7acec713d14c6ce8a20154f9dfda258d6bcad3b
# save the attached .config to linux build tree
make.cross ARCH=ia64

All errors (new ones prefixed by >>):

   In file included from drivers/clocksource/timer-of.c:25:0:
   drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has 
incomplete type

 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
from drivers/clocksource/timer-of.c:18:
   drivers/clocksource/timer-of.h: In function 'to_timer_of':
include/linux/kernel.h:860:32: error: dereferencing pointer to 
incomplete type 'struct clock_event_device'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'

  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'

 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'

#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 
'BUILD_BUG_ON_MSG'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro 
'__same_type'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers/clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'

 return container_of(clkevt, struct timer_of, clkevt);
^~~~
--
   In file included from drivers//clocksource/timer-of.c:25:0:
   drivers//clocksource/timer-of.h:35:28: error: field 'clkevt' has 
incomplete type

 struct clock_event_device clkevt;
   ^~
   In file included from include/linux/err.h:4:0,
from include/linux/clk.h:15,
            from drivers//clocksource/timer-of.c:18:
   drivers//clocksource/timer-of.h: In function 'to_timer_of':
include/linux/kernel.h:860:32: error: dereferencing pointer to 
incomplete type 'struct clock_event_device'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~
   include/linux/compiler.h:517:19: note: in definition of macro 
'__compiletime_assert'

  bool __cond = !(condition);\
  ^
   include/linux/compiler.h:537:2: note: in expansion of macro 
'_compiletime_assert'

 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/build_bug.h:46:37: note: in expansion of macro 
'compiletime_assert'

#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/kernel.h:860:2: note: in expansion of macro 
'BUILD_BUG_ON_MSG'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
 ^~~~
   include/linux/kernel.h:860:20: note: in expansion of macro 
'__same_type'

 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
   ^~~
   drivers//clocksource/timer-of.h:44:9: note: in expansion of macro 
'container_of'

 return container_of(clkevt, struct timer_of, clkevt);
^~~~

vim +860 include/linux/kernel.h

   843
   844
   845/*
   846 * swap - swap value of @a and @b
   847 */
   848#define swap(a, b) \
   849do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } 
while (0)

   850
   851/**
   852 * container_of - cast a member of a structure out to the 
containing structure

   853 * @ptr:the pointer to the member.
   854 * @type:the type of the container struct this i