summaryrefslogtreecommitdiffstats
path: root/include/uapi/linux/dm-ioctl.h
diff options
context:
space:
mode:
authorMike Snitzer2018-04-03 21:05:12 +0200
committerMike Snitzer2018-04-04 18:12:38 +0200
commit971888c46993f871f20d02d1fe43486a924fad11 (patch)
treeb327b79b5e3915f7912dd7f48006df08b0028837 /include/uapi/linux/dm-ioctl.h
parentdm raid: fix parse_raid_params() variable range issue (diff)
downloadkernel-qcow2-linux-971888c46993f871f20d02d1fe43486a924fad11.tar.gz
kernel-qcow2-linux-971888c46993f871f20d02d1fe43486a924fad11.tar.xz
kernel-qcow2-linux-971888c46993f871f20d02d1fe43486a924fad11.zip
dm: hold DM table for duration of ioctl rather than use blkdev_get
Commit 519049afead ("dm: use blkdev_get rather than bdgrab when issuing pass-through ioctl") inadvertantly introduced a regression relative to users of device cgroups that issue ioctls (e.g. libvirt). Using blkdev_get() in DM's passthrough ioctl support implicitly introduced a cgroup permissions check that would fail unless care were taken to add all devices in the IO stack to the device cgroup. E.g. rather than just adding the top-level DM multipath device to the cgroup all the underlying devices would need to be allowed. Fix this, to no longer require allowing all underlying devices, by simply holding the live DM table (which includes the table's original blkdev_get() reference on the blockdevice that the ioctl will be issued to) for the duration of the ioctl. Also, bump the DM ioctl version so a user can know that their device cgroup allow workaround is no longer needed. Reported-by: Michal Privoznik <mprivozn@redhat.com> Suggested-by: Mikulas Patocka <mpatocka@redhat.com> Fixes: 519049afead ("dm: use blkdev_get rather than bdgrab when issuing pass-through ioctl") Cc: stable@vger.kernel.org # 4.16 Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'include/uapi/linux/dm-ioctl.h')
-rw-r--r--include/uapi/linux/dm-ioctl.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/uapi/linux/dm-ioctl.h b/include/uapi/linux/dm-ioctl.h
index 5108da02cd32..d1e49514977b 100644
--- a/include/uapi/linux/dm-ioctl.h
+++ b/include/uapi/linux/dm-ioctl.h
@@ -270,9 +270,9 @@ enum {
#define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
#define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 38
+#define DM_VERSION_MINOR 39
#define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl (2018-02-28)"
+#define DM_VERSION_EXTRA "-ioctl (2018-04-03)"
/* Status bits */
#define DM_READONLY_FLAG (1 << 0) /* In/Out */