Lines Matching refs:iw

46 static bool io_waitid_compat_copy_si(struct io_waitid *iw, int signo)  in io_waitid_compat_copy_si()  argument
51 infop = (struct compat_siginfo __user *) iw->infop; in io_waitid_compat_copy_si()
58 unsafe_put_user(iw->info.cause, &infop->si_code, Efault); in io_waitid_compat_copy_si()
59 unsafe_put_user(iw->info.pid, &infop->si_pid, Efault); in io_waitid_compat_copy_si()
60 unsafe_put_user(iw->info.uid, &infop->si_uid, Efault); in io_waitid_compat_copy_si()
61 unsafe_put_user(iw->info.status, &infop->si_status, Efault); in io_waitid_compat_copy_si()
74 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid); in io_waitid_copy_si() local
77 if (!iw->infop) in io_waitid_copy_si()
82 return io_waitid_compat_copy_si(iw, signo); in io_waitid_copy_si()
85 if (!user_write_access_begin(iw->infop, sizeof(*iw->infop))) in io_waitid_copy_si()
88 unsafe_put_user(signo, &iw->infop->si_signo, Efault); in io_waitid_copy_si()
89 unsafe_put_user(0, &iw->infop->si_errno, Efault); in io_waitid_copy_si()
90 unsafe_put_user(iw->info.cause, &iw->infop->si_code, Efault); in io_waitid_copy_si()
91 unsafe_put_user(iw->info.pid, &iw->infop->si_pid, Efault); in io_waitid_copy_si()
92 unsafe_put_user(iw->info.uid, &iw->infop->si_uid, Efault); in io_waitid_copy_si()
93 unsafe_put_user(iw->info.status, &iw->infop->si_status, Efault); in io_waitid_copy_si()
120 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid); in io_waitid_complete() local
124 WARN_ON_ONCE(!(atomic_read(&iw->refs) & IO_WAITID_REF_MASK)); in io_waitid_complete()
139 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid); in __io_waitid_cancel() local
146 atomic_or(IO_WAITID_CANCEL_FLAG, &iw->refs); in __io_waitid_cancel()
149 if (atomic_fetch_inc(&iw->refs) & IO_WAITID_REF_MASK) in __io_waitid_cancel()
152 spin_lock_irq(&iw->head->lock); in __io_waitid_cancel()
154 spin_unlock_irq(&iw->head->lock); in __io_waitid_cancel()
209 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid); in io_waitid_drop_issue_ref() local
212 if (!atomic_sub_return(1, &iw->refs)) in io_waitid_drop_issue_ref()
221 remove_wait_queue(iw->head, &iwa->wo.child_wait); in io_waitid_drop_issue_ref()
242 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid); in io_waitid_cb() local
246 if (!(atomic_read(&iw->refs) & IO_WAITID_CANCEL_FLAG)) { in io_waitid_cb()
247 iw->head = &current->signal->wait_chldexit; in io_waitid_cb()
248 add_wait_queue(iw->head, &iwa->wo.child_wait); in io_waitid_cb()
256 remove_wait_queue(iw->head, &iwa->wo.child_wait); in io_waitid_cb()
269 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid); in io_waitid_wait() local
276 if (atomic_fetch_inc(&iw->refs) & IO_WAITID_REF_MASK) in io_waitid_wait()
287 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid); in io_waitid_prep() local
292 iw->which = READ_ONCE(sqe->len); in io_waitid_prep()
293 iw->upid = READ_ONCE(sqe->fd); in io_waitid_prep()
294 iw->options = READ_ONCE(sqe->file_index); in io_waitid_prep()
295 iw->infop = u64_to_user_ptr(READ_ONCE(sqe->addr2)); in io_waitid_prep()
301 struct io_waitid *iw = io_kiocb_to_cmd(req, struct io_waitid); in io_waitid() local
312 ret = kernel_waitid_prepare(&iwa->wo, iw->which, iw->upid, &iw->info, in io_waitid()
313 iw->options, NULL); in io_waitid()
322 atomic_set(&iw->refs, 1); in io_waitid()
335 iw->head = &current->signal->wait_chldexit; in io_waitid()
336 add_wait_queue(iw->head, &iwa->wo.child_wait); in io_waitid()
358 remove_wait_queue(iw->head, &iwa->wo.child_wait); in io_waitid()