block: ublk: switch to ioctl command encoding
authorMing Lei <ming.lei@redhat.com>
Tue, 18 Apr 2023 13:18:10 +0000 (21:18 +0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 19 Apr 2023 02:13:30 +0000 (20:13 -0600)
commit2d786e66c9662d84cbeab981ce3a371d2fb5a4bb
tree2ad50911d14ac8d4ae8e1b0db82764dfc8258984
parent26a42b614eb934f400cd3d1cc0b7fa1955ae3320
block: ublk: switch to ioctl command encoding

All ublk commands(control, IO) should have taken ioctl command encoding
from the beginning, because ioctl command encoding defines each code
uniquely, so driver can figure out wrong command sent from userspace
easily; 2) it might help security subsystem for audit uring cmd[1].

Unfortunately we didn't do that way, and it could be one lesson for
ublk driver.

So switch to ioctl command encoding now, we still support commands encoded
in old way, but they become legacy definition. Any new command should take
ioctl encoding.

See ublksrv code for switching to ioctl command encoding in [2].

[1] https://lore.kernel.org/io-uring/CAHC9VhSVzujW9LOj5Km80AjU0EfAuukoLrxO6BEfnXeK_s6bAg@mail.gmail.com/
[2] https://github.com/ming1/ubdsrv/commits/ioctl_cmd_encoding

Cc: Christoph Hellwig <hch@infradead.org>
Cc: Ken Kurematsu <k.kurematsu@nskint.co.jp>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20230418131810.855959-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/Kconfig
drivers/block/ublk_drv.c
include/uapi/linux/ublk_cmd.h