Commit bdb2c48e authored by Pavel Begunkov's avatar Pavel Begunkov Committed by Jens Axboe
Browse files

io_uring: explicit sqe padding for ioctl commands



32 bit sqe->cmd_op is an union with 64 bit values. It's always a good
idea to do padding explicitly. Also zero check it in prep, so it can be
used in the future if needed without compatibility concerns.

Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/e6b95a05e970af79000435166185e85b196b2ba2.1657202417.git.asml.silence@gmail.com


[axboe: turn bitwise OR into logical variant]
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 09007af2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5066,7 +5066,7 @@ static int io_uring_cmd_prep(struct io_kiocb *req,
{
	struct io_uring_cmd *ioucmd = &req->uring_cmd;

	if (sqe->rw_flags)
	if (sqe->rw_flags || sqe->__pad1)
		return -EINVAL;
	ioucmd->cmd = sqe->cmd;
	ioucmd->cmd_op = READ_ONCE(sqe->cmd_op);
+4 −1
Original line number Diff line number Diff line
@@ -22,7 +22,10 @@ struct io_uring_sqe {
	union {
		__u64	off;	/* offset into file */
		__u64	addr2;
		struct {
			__u32	cmd_op;
			__u32	__pad1;
		};
	};
	union {
		__u64	addr;	/* pointer to buffer or iovecs */