Commit 72dbde0f authored by Aleksa Sarai's avatar Aleksa Sarai Committed by Jens Axboe
Browse files

io_uring: correct check for O_TMPFILE



O_TMPFILE is actually __O_TMPFILE|O_DIRECTORY. This means that the old
check for whether RESOLVE_CACHED can be used would incorrectly think
that O_DIRECTORY could not be used with RESOLVE_CACHED.

Cc: stable@vger.kernel.org # v5.12+
Fixes: 3a81fd02 ("io_uring: enable LOOKUP_CACHED path resolution for filename lookups")
Signed-off-by: default avatarAleksa Sarai <cyphar@cyphar.com>
Link: https://lore.kernel.org/r/20230807-resolve_cached-o_tmpfile-v3-1-e49323e1ef6f@cyphar.com


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 52a93d39
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -35,9 +35,11 @@ static bool io_openat_force_async(struct io_open *open)
{
	/*
	 * Don't bother trying for O_TRUNC, O_CREAT, or O_TMPFILE open,
	 * it'll always -EAGAIN
	 * it'll always -EAGAIN. Note that we test for __O_TMPFILE because
	 * O_TMPFILE includes O_DIRECTORY, which isn't a flag we need to force
	 * async for.
	 */
	return open->how.flags & (O_TRUNC | O_CREAT | O_TMPFILE);
	return open->how.flags & (O_TRUNC | O_CREAT | __O_TMPFILE);
}

static int __io_openat_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)