io_uring: io_wq_submit_work() should not touch req->rw
authorJens Axboe <axboe@kernel.dk>
Wed, 18 Dec 2019 19:19:41 +0000 (12:19 -0700)
committerJens Axboe <axboe@kernel.dk>
Wed, 18 Dec 2019 19:19:41 +0000 (12:19 -0700)
commitfd6c2e4c063d64511657ad0031a1677b6a914859
tree7430a804ec01e1495d291353ad398b272e45d9cb
parent7c504e65206a4379ff38fe41d21b32b6c2c3e53e
io_uring: io_wq_submit_work() should not touch req->rw

I've been chasing a weird and obscure crash that was userspace stack
corruption, and finally narrowed it down to a bit flip that made a
stack address invalid. io_wq_submit_work() unconditionally flips
the req->rw.ki_flags IOCB_NOWAIT bit, but since it's a generic work
handler, this isn't valid. Normal read/write operations own that
part of the request, on other types it could be something else.

Move the IOCB_NOWAIT clear to the read/write handlers where it belongs.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c