tree: https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git queue-5.10 head: 9ced6633127bd25a94939777d9ecda54800859fc commit: 28095f9cb8c185be018e34390a9cbdd5a39648d7 [46/74] io_uring: don't take uring_lock during iowq cancel config: nios2-defconfig (attached as .config) compiler: nios2-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git/commit/?id=28095f9cb8c185be018e34390a9cbdd5a39648d7 git remote add sashal-linux-stable https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git git fetch --no-tags sashal-linux-stable queue-5.10 git checkout 28095f9cb8c185be018e34390a9cbdd5a39648d7 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=nios2 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): fs/io_uring.c: In function 'io_prep_async_work': fs/io_uring.c:1431:22: warning: variable 'id' set but not used [-Wunused-but-set-variable] 1431 | struct io_identity *id; | ^~ fs/io_uring.c: In function 'io_close': fs/io_uring.c:4283:22: error: 'IO_WQ_WORK_NO_CANCEL' undeclared (first use in this function); did you mean 'IO_WQ_WORK_CANCEL'? 4283 | req->work.flags |= IO_WQ_WORK_NO_CANCEL; | ^~~~~~~~~~~~~~~~~~~~ | IO_WQ_WORK_CANCEL fs/io_uring.c:4283:22: note: each undeclared identifier is reported only once for each function it appears in fs/io_uring.c: In function 'io_wq_submit_work': >> fs/io_uring.c:6108:3: error: implicit declaration of function 'io_req_task_work_add_fallback'; did you mean 'io_req_task_work_add'? [-Werror=implicit-function-declaration] 6108 | io_req_task_work_add_fallback(req, io_req_task_cancel); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | io_req_task_work_add fs/io_uring.c:6109:3: error: 'return' with no value, in function returning non-void [-Werror=return-type] 6109 | return; | ^~~~~~ fs/io_uring.c:6094:27: note: declared here 6094 | static struct io_wq_work *io_wq_submit_work(struct io_wq_work *work) | ^~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +6108 fs/io_uring.c 6093 6094 static struct io_wq_work *io_wq_submit_work(struct io_wq_work *work) 6095 { 6096 struct io_kiocb *req = container_of(work, struct io_kiocb, work); 6097 struct io_kiocb *timeout; 6098 int ret = 0; 6099 6100 timeout = io_prep_linked_timeout(req); 6101 if (timeout) 6102 io_queue_linked_timeout(timeout); 6103 6104 if (work->flags & IO_WQ_WORK_CANCEL) { 6105 /* io-wq is going to take down one */ 6106 refcount_inc(&req->refs); 6107 percpu_ref_get(&req->ctx->refs); > 6108 io_req_task_work_add_fallback(req, io_req_task_cancel); 6109 return; 6110 } 6111 6112 if (!ret) { 6113 do { 6114 ret = io_issue_sqe(req, false, NULL); 6115 /* 6116 * We can get EAGAIN for polled IO even though we're 6117 * forcing a sync submission from here, since we can't 6118 * wait for request slots on the block side. 6119 */ 6120 if (ret != -EAGAIN) 6121 break; 6122 cond_resched(); 6123 } while (1); 6124 } 6125 6126 if (ret) { 6127 struct io_ring_ctx *lock_ctx = NULL; 6128 6129 if (req->ctx->flags & IORING_SETUP_IOPOLL) 6130 lock_ctx = req->ctx; 6131 6132 /* 6133 * io_iopoll_complete() does not hold completion_lock to 6134 * complete polled io, so here for polled io, we can not call 6135 * io_req_complete() directly, otherwise there maybe concurrent 6136 * access to cqring, defer_list, etc, which is not safe. Given 6137 * that io_iopoll_complete() is always called under uring_lock, 6138 * so here for polled io, we also get uring_lock to complete 6139 * it. 6140 */ 6141 if (lock_ctx) 6142 mutex_lock(&lock_ctx->uring_lock); 6143 6144 req_set_fail_links(req); 6145 io_req_complete(req, ret); 6146 6147 if (lock_ctx) 6148 mutex_unlock(&lock_ctx->uring_lock); 6149 } 6150 6151 return io_steal_work(req); 6152 } 6153 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org