io_uring: handle multiple personalities in link chains
authorJens Axboe <axboe@kernel.dk>
Sun, 23 Feb 2020 06:22:19 +0000 (23:22 -0700)
committerJens Axboe <axboe@kernel.dk>
Mon, 24 Feb 2020 02:46:13 +0000 (19:46 -0700)
commit193155c8c9429f57400daf1f2ef0075016767112
tree27dfc2f52a5a871c07f7c221e308dbe040f2a13e
parentf8788d86ab28f61f7b46eb6be375f8a726783636
io_uring: handle multiple personalities in link chains

If we have a chain of requests and they don't all use the same
credentials, then the head of the chain will be issued with the
credentails of the tail of the chain.

Ensure __io_queue_sqe() overrides the credentials, if they are different.

Once we do that, we can clean up the creds handling as well, by only
having io_submit_sqe() do the lookup of a personality. It doesn't need
to assign it, since __io_queue_sqe() now always does the right thing.

Fixes: 75c6a03904e0 ("io_uring: support using a registered personality for commands")
Reported-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c