Hi Byungchul, [FYI, it's a private test report for your RFC patch.] [auto build test ERROR on tip/locking/core] [also build test ERROR on tip/sched/core linus/master v6.2-rc3 next-20230109] [cannot apply to drm-misc/drm-misc-next] [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/Byungchul-Park/llist-Move-llist_-head-node-definition-to-types-h/20230109-113638 patch link: https://lore.kernel.org/r/1673235231-30302-8-git-send-email-byungchul.park%40lge.com patch subject: [PATCH RFC v7 07/23] dept: Apply sdt_might_sleep_strong() to wait_for_completion()/complete() config: x86_64-rhel-8.3 compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/1ad58466df7ffb3bb3624e868e02b17e22f0bdbd git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Byungchul-Park/llist-Move-llist_-head-node-definition-to-types-h/20230109-113638 git checkout 1ad58466df7ffb3bb3624e868e02b17e22f0bdbd # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 olddefconfig make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/i2c/algos/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All errors (new ones prefixed by >>): In file included from include/linux/mm_types.h:14, from include/linux/buildid.h:5, from include/linux/module.h:14, from drivers/i2c/algos/i2c-algo-pca.c:9: drivers/i2c/algos/i2c-algo-pca.c: In function 'pca_start': >> include/linux/completion.h:118:1: error: expected identifier before '(' token 118 | ({ \ | ^ drivers/i2c/algos/i2c-algo-pca.c:33:30: note: in expansion of macro 'wait_for_completion' 33 | #define pca_wait(adap) adap->wait_for_completion(adap->data) | ^~~~~~~~~~~~~~~~~~~ drivers/i2c/algos/i2c-algo-pca.c:75:16: note: in expansion of macro 'pca_wait' 75 | return pca_wait(adap); | ^~~~~~~~ drivers/i2c/algos/i2c-algo-pca.c: In function 'pca_repeated_start': >> include/linux/completion.h:118:1: error: expected identifier before '(' token 118 | ({ \ | ^ drivers/i2c/algos/i2c-algo-pca.c:33:30: note: in expansion of macro 'wait_for_completion' 33 | #define pca_wait(adap) adap->wait_for_completion(adap->data) | ^~~~~~~~~~~~~~~~~~~ drivers/i2c/algos/i2c-algo-pca.c:90:16: note: in expansion of macro 'pca_wait' 90 | return pca_wait(adap); | ^~~~~~~~ drivers/i2c/algos/i2c-algo-pca.c: In function 'pca_address': >> include/linux/completion.h:118:1: error: expected identifier before '(' token 118 | ({ \ | ^ drivers/i2c/algos/i2c-algo-pca.c:33:30: note: in expansion of macro 'wait_for_completion' 33 | #define pca_wait(adap) adap->wait_for_completion(adap->data) | ^~~~~~~~~~~~~~~~~~~ drivers/i2c/algos/i2c-algo-pca.c:130:16: note: in expansion of macro 'pca_wait' 130 | return pca_wait(adap); | ^~~~~~~~ drivers/i2c/algos/i2c-algo-pca.c: In function 'pca_tx_byte': >> include/linux/completion.h:118:1: error: expected identifier before '(' token 118 | ({ \ | ^ drivers/i2c/algos/i2c-algo-pca.c:33:30: note: in expansion of macro 'wait_for_completion' 33 | #define pca_wait(adap) adap->wait_for_completion(adap->data) | ^~~~~~~~~~~~~~~~~~~ drivers/i2c/algos/i2c-algo-pca.c:148:16: note: in expansion of macro 'pca_wait' 148 | return pca_wait(adap); | ^~~~~~~~ drivers/i2c/algos/i2c-algo-pca.c: In function 'pca_rx_ack': >> include/linux/completion.h:118:1: error: expected identifier before '(' token 118 | ({ \ | ^ drivers/i2c/algos/i2c-algo-pca.c:33:30: note: in expansion of macro 'wait_for_completion' 33 | #define pca_wait(adap) adap->wait_for_completion(adap->data) | ^~~~~~~~~~~~~~~~~~~ drivers/i2c/algos/i2c-algo-pca.c:179:16: note: in expansion of macro 'pca_wait' 179 | return pca_wait(adap); | ^~~~~~~~ drivers/i2c/algos/i2c-algo-pca.c: In function 'pca_address': drivers/i2c/algos/i2c-algo-pca.c:131:1: error: control reaches end of non-void function [-Werror=return-type] 131 | } | ^ drivers/i2c/algos/i2c-algo-pca.c: In function 'pca_tx_byte': drivers/i2c/algos/i2c-algo-pca.c:149:1: error: control reaches end of non-void function [-Werror=return-type] 149 | } | ^ drivers/i2c/algos/i2c-algo-pca.c: In function 'pca_rx_ack': drivers/i2c/algos/i2c-algo-pca.c:180:1: error: control reaches end of non-void function [-Werror=return-type] 180 | } | ^ drivers/i2c/algos/i2c-algo-pca.c: In function 'pca_start': drivers/i2c/algos/i2c-algo-pca.c:76:1: error: control reaches end of non-void function [-Werror=return-type] 76 | } | ^ drivers/i2c/algos/i2c-algo-pca.c: In function 'pca_repeated_start': drivers/i2c/algos/i2c-algo-pca.c:91:1: error: control reaches end of non-void function [-Werror=return-type] 91 | } | ^ cc1: some warnings being treated as errors vim +118 include/linux/completion.h 102 103 extern void raw_wait_for_completion(struct completion *); 104 extern void raw_wait_for_completion_io(struct completion *); 105 extern int raw_wait_for_completion_interruptible(struct completion *x); 106 extern int raw_wait_for_completion_killable(struct completion *x); 107 extern int raw_wait_for_completion_state(struct completion *x, unsigned int state); 108 extern unsigned long raw_wait_for_completion_timeout(struct completion *x, 109 unsigned long timeout); 110 extern unsigned long raw_wait_for_completion_io_timeout(struct completion *x, 111 unsigned long timeout); 112 extern long raw_wait_for_completion_interruptible_timeout( 113 struct completion *x, unsigned long timeout); 114 extern long raw_wait_for_completion_killable_timeout( 115 struct completion *x, unsigned long timeout); 116 117 #define wait_for_completion(x) \ > 118 ({ \ 119 sdt_might_sleep_strong(NULL); \ 120 raw_wait_for_completion(x); \ 121 sdt_might_sleep_finish(); \ 122 }) 123 #define wait_for_completion_io(x) \ 124 ({ \ 125 sdt_might_sleep_strong(NULL); \ 126 raw_wait_for_completion_io(x); \ 127 sdt_might_sleep_finish(); \ 128 }) 129 #define wait_for_completion_interruptible(x) \ 130 ({ \ 131 int __ret; \ 132 sdt_might_sleep_strong(NULL); \ 133 __ret = raw_wait_for_completion_interruptible(x); \ 134 sdt_might_sleep_finish(); \ 135 __ret; \ 136 }) 137 #define wait_for_completion_killable(x) \ 138 ({ \ 139 int __ret; \ 140 sdt_might_sleep_strong(NULL); \ 141 __ret = raw_wait_for_completion_killable(x); \ 142 sdt_might_sleep_finish(); \ 143 __ret; \ 144 }) 145 #define wait_for_completion_state(x, s) \ 146 ({ \ 147 int __ret; \ 148 sdt_might_sleep_strong(NULL); \ 149 __ret = raw_wait_for_completion_state(x, s); \ 150 sdt_might_sleep_finish(); \ 151 __ret; \ 152 }) 153 #define wait_for_completion_timeout(x, t) \ 154 ({ \ 155 unsigned long __ret; \ 156 sdt_might_sleep_strong(NULL); \ 157 __ret = raw_wait_for_completion_timeout(x, t); \ 158 sdt_might_sleep_finish(); \ 159 __ret; \ 160 }) 161 #define wait_for_completion_io_timeout(x, t) \ 162 ({ \ 163 unsigned long __ret; \ 164 sdt_might_sleep_strong(NULL); \ 165 __ret = raw_wait_for_completion_io_timeout(x, t); \ 166 sdt_might_sleep_finish(); \ 167 __ret; \ 168 }) 169 #define wait_for_completion_interruptible_timeout(x, t) \ 170 ({ \ 171 long __ret; \ 172 sdt_might_sleep_strong(NULL); \ 173 __ret = raw_wait_for_completion_interruptible_timeout(x, t);\ 174 sdt_might_sleep_finish(); \ 175 __ret; \ 176 }) 177 #define wait_for_completion_killable_timeout(x, t) \ 178 ({ \ 179 long __ret; \ 180 sdt_might_sleep_strong(NULL); \ 181 __ret = raw_wait_for_completion_killable_timeout(x, t); \ 182 sdt_might_sleep_finish(); \ 183 __ret; \ 184 }) 185 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests