Re: [PATCH v2] kernfs: recheck of->released after acquiring the active reference
kernel test robot <[email protected]>
| Newsgroups | dev.linux.lists.driver-core,dev.linux.lists.oe-kbuild-all,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
Hi Fan, kernel test robot noticed the following build errors: [auto build test ERROR on driver-core/driver-core-testing] [also build test ERROR on driver-core/driver-core-next driver-core/driver-core-linus linus/master v7.2 next-20260821] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Fan-Wu/kernfs-recheck-of-released-after-acquiring-the-active-reference/20260821-050720 base: driver-core/driver-core-testing patch link: https://lore.kernel.org/r/20260821050720.14848-1-fanwu01%40zju.edu.cn patch subject: [PATCH v2] kernfs: recheck of->released after acquiring the active reference config: alpha-allnoconfig (https://download.01.org/0day-ci/archive/20260823/[email protected]/config) compiler: alpha-linux-gcc (GCC) 16.1.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260823/[email protected]/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ All errors (new ones prefixed by >>): | ^~~~~~~~~~~~~ include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type' 49 | compiletime_assert_rwonce_type(x); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/kernfs/file.c:76:22: note: in expansion of macro 'READ_ONCE' 76 | if (unlikely(READ_ONCE(of->released))) { | ^~~~~~~~~ include/linux/compiler_types.h:663:45: error: 'sizeof' applied to a bit-field 663 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \ | ^ include/linux/compiler.h:77:45: note: in definition of macro 'unlikely' 77 | # define unlikely(x) __builtin_expect(!!(x), 0) | ^ include/linux/compiler_types.h:690:9: note: in expansion of macro '__compiletime_assert' 690 | __compiletime_assert(condition, msg, prefix, suffix) | ^~~~~~~~~~~~~~~~~~~~ include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert' 702 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) | ^~~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert' 36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ | ^~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word' 36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ | ^~~~~~~~~~~~~ include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type' 49 | compiletime_assert_rwonce_type(x); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/kernfs/file.c:76:22: note: in expansion of macro 'READ_ONCE' 76 | if (unlikely(READ_ONCE(of->released))) { | ^~~~~~~~~ include/linux/compiler_types.h:664:16: error: 'sizeof' applied to a bit-field 664 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) | ^ include/linux/compiler.h:77:45: note: in definition of macro 'unlikely' 77 | # define unlikely(x) __builtin_expect(!!(x), 0) | ^ include/linux/compiler_types.h:690:9: note: in expansion of macro '__compiletime_assert' 690 | __compiletime_assert(condition, msg, prefix, suffix) | ^~~~~~~~~~~~~~~~~~~~ include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert' 702 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) | ^~~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert' 36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ | ^~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word' 36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ | ^~~~~~~~~~~~~ include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type' 49 | compiletime_assert_rwonce_type(x); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/kernfs/file.c:76:22: note: in expansion of macro 'READ_ONCE' 76 | if (unlikely(READ_ONCE(of->released))) { | ^~~~~~~~~ include/linux/compiler_types.h:664:44: error: 'sizeof' applied to a bit-field 664 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) | ^ include/linux/compiler.h:77:45: note: in definition of macro 'unlikely' 77 | # define unlikely(x) __builtin_expect(!!(x), 0) | ^ include/linux/compiler_types.h:690:9: note: in expansion of macro '__compiletime_assert' 690 | __compiletime_assert(condition, msg, prefix, suffix) | ^~~~~~~~~~~~~~~~~~~~ include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert' 702 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) | ^~~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert' 36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ | ^~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word' 36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ | ^~~~~~~~~~~~~ include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type' 49 | compiletime_assert_rwonce_type(x); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/kernfs/file.c:76:22: note: in expansion of macro 'READ_ONCE' 76 | if (unlikely(READ_ONCE(of->released))) { | ^~~~~~~~~ include/asm-generic/rwonce.h:36:54: error: 'sizeof' applied to a bit-field 36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ | ^ include/linux/compiler.h:77:45: note: in definition of macro 'unlikely' 77 | # define unlikely(x) __builtin_expect(!!(x), 0) | ^ include/linux/compiler_types.h:690:9: note: in expansion of macro '__compiletime_assert' 690 | __compiletime_assert(condition, msg, prefix, suffix) | ^~~~~~~~~~~~~~~~~~~~ include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert' 702 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) | ^~~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert' 36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ | ^~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type' 49 | compiletime_assert_rwonce_type(x); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/kernfs/file.c:76:22: note: in expansion of macro 'READ_ONCE' 76 | if (unlikely(READ_ONCE(of->released))) { | ^~~~~~~~~ >> fs/kernfs/file.c:76:32: error: 'typeof' applied to a bit-field 76 | if (unlikely(READ_ONCE(of->released))) { | ^~ include/linux/compiler.h:77:45: note: in definition of macro 'unlikely' 77 | # define unlikely(x) __builtin_expect(!!(x), 0) | ^ include/asm-generic/rwonce.h:44:43: note: in expansion of macro '__unqual_scalar_typeof' 44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x)) | ^~~~~~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE' 50 | __READ_ONCE(x); \ | ^~~~~~~~~~~ fs/kernfs/file.c:76:22: note: in expansion of macro 'READ_ONCE' 76 | if (unlikely(READ_ONCE(of->released))) { | ^~~~~~~~~ include/asm-generic/rwonce.h:44:71: error: cannot take address of bit-field 'released' 44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x)) | ^ include/linux/compiler.h:77:45: note: in definition of macro 'unlikely' 77 | # define unlikely(x) __builtin_expect(!!(x), 0) | ^ include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE' 50 | __READ_ONCE(x); \ | ^~~~~~~~~~~ fs/kernfs/file.c:76:22: note: in expansion of macro 'READ_ONCE' 76 | if (unlikely(READ_ONCE(of->released))) { | ^~~~~~~~~ vim +/typeof +76 fs/kernfs/file.c 65 66 /* Get active reference to kernfs node for an open file */ 67 static struct kernfs_open_file *kernfs_get_active_of(struct kernfs_open_file *of) 68 { 69 if (!kernfs_get_active(of->kn)) 70 return NULL; 71 72 /* 73 * A successful active reference prevents a new drain and orders this 74 * check after an earlier reactivation. 75 */ > 76 if (unlikely(READ_ONCE(of->released))) { 77 kernfs_put_active(of->kn); 78 return NULL; 79 } 80 81 return of; 82 } 83 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki