Re: drivers/net/wireless/broadcom/b43legacy/debugfs.c:224:23: error: implicit declaration of function 'debugfs_real_fops'

From: Greg Kroah-Hartman
Date: Fri Nov 17 2017 - 03:01:18 EST


On Fri, Nov 17, 2017 at 09:15:46AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: cf9b0772f2e410645fece13b749bd56505b998b8
> commit: 7c8d469877b16d2c1cecf101a0abb7b218db85bc debugfs: add support for more elaborate ->d_fsdata
> date: 9 days ago
> config: x86_64-randconfig-s1-11170747 (attached as .config)
> compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
> reproduce:
> git checkout 7c8d469877b16d2c1cecf101a0abb7b218db85bc
> # save the attached .config to linux build tree
> make ARCH=x86_64
>
> All error/warnings (new ones prefixed by >>):
>
> In file included from include/linux/list.h:8:0,
> from include/linux/wait.h:6,
> from include/linux/wait_bit.h:7,
> from include/linux/fs.h:5,
> from drivers/net/wireless/broadcom/b43legacy/debugfs.c:26:
> drivers/net/wireless/broadcom/b43legacy/debugfs.c: In function 'b43legacy_debugfs_read':
> >> drivers/net/wireless/broadcom/b43legacy/debugfs.c:224:23: error: implicit declaration of function 'debugfs_real_fops' [-Werror=implicit-function-declaration]
> dfops = container_of(debugfs_real_fops(file),
> ^
> include/linux/kernel.h:927:26: note: in definition of macro 'container_of'
> void *__mptr = (void *)(ptr); \
> ^~~
> include/linux/kernel.h:927:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
> void *__mptr = (void *)(ptr); \
> ^
> >> drivers/net/wireless/broadcom/b43legacy/debugfs.c:224:10: note: in expansion of macro 'container_of'
> dfops = container_of(debugfs_real_fops(file),
> ^~~~~~~~~~~~
> In file included from include/linux/linkage.h:4:0,
> from include/linux/fs.h:4,
> from drivers/net/wireless/broadcom/b43legacy/debugfs.c:26:
> include/linux/kernel.h:928:32: error: invalid type argument of unary '*' (have 'int')
> BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
> ^~~~~~
> include/linux/compiler.h:553:19: note: in definition of macro '__compiletime_assert'
> bool __cond = !(condition); \
> ^~~~~~~~~
> include/linux/compiler.h:576: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:928:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
> BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
> ^~~~~~~~~~~~~~~~
> include/linux/kernel.h:928:20: note: in expansion of macro '__same_type'
> BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
> ^~~~~~~~~~~
> >> drivers/net/wireless/broadcom/b43legacy/debugfs.c:224:10: note: in expansion of macro 'container_of'
> dfops = container_of(debugfs_real_fops(file),
> ^~~~~~~~~~~~
> include/linux/kernel.h:929:18: error: invalid type argument of unary '*' (have 'int')
> !__same_type(*(ptr), void), \
> ^~~~~~
> include/linux/compiler.h:553:19: note: in definition of macro '__compiletime_assert'
> bool __cond = !(condition); \
> ^~~~~~~~~
> include/linux/compiler.h:576: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:928:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
> BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
> ^~~~~~~~~~~~~~~~
> include/linux/kernel.h:929:6: note: in expansion of macro '__same_type'
> !__same_type(*(ptr), void), \
> ^~~~~~~~~~~
> >> drivers/net/wireless/broadcom/b43legacy/debugfs.c:224:10: note: in expansion of macro 'container_of'
> dfops = container_of(debugfs_real_fops(file),
> ^~~~~~~~~~~~
> In file included from include/linux/list.h:8:0,
> from include/linux/wait.h:6,
> from include/linux/wait_bit.h:7,
> from include/linux/fs.h:5,
> from drivers/net/wireless/broadcom/b43legacy/debugfs.c:26:
> drivers/net/wireless/broadcom/b43legacy/debugfs.c: In function 'b43legacy_debugfs_write':
> include/linux/kernel.h:927:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
> void *__mptr = (void *)(ptr); \
> ^
> drivers/net/wireless/broadcom/b43legacy/debugfs.c:291:10: note: in expansion of macro 'container_of'
> dfops = container_of(debugfs_real_fops(file),
> ^~~~~~~~~~~~
> In file included from include/linux/linkage.h:4:0,
> from include/linux/fs.h:4,
> from drivers/net/wireless/broadcom/b43legacy/debugfs.c:26:
> include/linux/kernel.h:928:32: error: invalid type argument of unary '*' (have 'int')
> BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
> ^~~~~~
> include/linux/compiler.h:553:19: note: in definition of macro '__compiletime_assert'
> bool __cond = !(condition); \
> ^~~~~~~~~
> include/linux/compiler.h:576: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:928:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
> BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
> ^~~~~~~~~~~~~~~~
> include/linux/kernel.h:928:20: note: in expansion of macro '__same_type'
> BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
> ^~~~~~~~~~~
> drivers/net/wireless/broadcom/b43legacy/debugfs.c:291:10: note: in expansion of macro 'container_of'
> dfops = container_of(debugfs_real_fops(file),
> ^~~~~~~~~~~~
> include/linux/kernel.h:929:18: error: invalid type argument of unary '*' (have 'int')
> !__same_type(*(ptr), void), \
> ^~~~~~
> include/linux/compiler.h:553:19: note: in definition of macro '__compiletime_assert'
> bool __cond = !(condition); \
> ^~~~~~~~~
> include/linux/compiler.h:576: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:928:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
> BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
> ^~~~~~~~~~~~~~~~
> include/linux/kernel.h:929:6: note: in expansion of macro '__same_type'
> !__same_type(*(ptr), void), \
> ^~~~~~~~~~~
> drivers/net/wireless/broadcom/b43legacy/debugfs.c:291:10: note: in expansion of macro 'container_of'
> dfops = container_of(debugfs_real_fops(file),
> ^~~~~~~~~~~~
> cc1: some warnings being treated as errors
>
> vim +/debugfs_real_fops +224 drivers/net/wireless/broadcom/b43legacy/debugfs.c

Arnd has sent me a patch to fix this, but I need to wait for Linus to
take my latest pull request before I can queue it up...

thanks,

greg k-h