[RFC PATCH 0/7] Allow race-free block device handling

From: Demi Marie Obenour
Date: Wed Jan 25 2023 - 22:34:24 EST


This work aims to allow userspace to create and destroy block devices
in a race-free and leak-free way, and to allow them to be exposed to
other Xen VMs via blkback without leaks or races. It’s marked as RFC
for a few reasons:

- The code has been only lightly tested. It might be unstable or
insecure.

- The DM_DEV_CREATE ioctl gains a new flag. Unknown flags were
previously ignored, so this could theoretically break buggy userspace
tools.

- I have no idea if I got the block device reference counting and
locking correct.

Demi Marie Obenour (7):
block: Support creating a struct file from a block device
Allow userspace to get an FD to a newly-created DM device
Implement diskseq checks in blkback
Increment diskseq when releasing a loop device
If autoclear is set, delete a no-longer-used loop device
Minor blkback cleanups
xen/blkback: Inform userspace that device has been opened

block/bdev.c | 77 +++++++++++--
block/genhd.c | 1 +
drivers/block/loop.c | 17 ++-
drivers/block/xen-blkback/blkback.c | 8 +-
drivers/block/xen-blkback/xenbus.c | 171 ++++++++++++++++++++++------
drivers/md/dm-ioctl.c | 67 +++++++++--
include/linux/blkdev.h | 5 +
include/uapi/linux/dm-ioctl.h | 16 ++-
8 files changed, 298 insertions(+), 64 deletions(-)

--
Sincerely,
Demi Marie Obenour (she/her/hers)
Invisible Things Lab