1 #include <linux/ioctl.h>
2 #include <linux/dm-ioctl.h>
10 static const struct ioctl dm_ioctls
[] = {
13 IOCTL(DM_LIST_DEVICES
),
17 IOCTL(DM_DEV_SUSPEND
),
21 IOCTL(DM_TABLE_CLEAR
),
23 IOCTL(DM_TABLE_STATUS
),
24 IOCTL(DM_LIST_VERSIONS
),
26 IOCTL(DM_DEV_SET_GEOMETRY
),
29 static const char *const dm_devs
[] = {
33 static void dm_sanitise(const struct ioctl_group
*grp
, int childno
)
37 pick_random_ioctl(grp
, childno
);
39 shm
->syscall
[childno
].a3
= (unsigned long) page_rand
;
40 dm
= (struct dm_ioctl
*)shm
->syscall
[childno
].a3
;
42 /* set a sensible version to get past the initial checks */
43 dm
->version
[0] = DM_VERSION_MAJOR
;
44 dm
->version
[1] = DM_VERSION_MINOR
;
45 dm
->version
[2] = DM_VERSION_PATCHLEVEL
;
47 /* clear one of these strings to pass some kernel validation */
54 static const struct ioctl_group dm_grp_misc
= {
57 .devs_cnt
= ARRAY_SIZE(dm_devs
),
58 .sanitise
= dm_sanitise
,
60 .ioctls_cnt
= ARRAY_SIZE(dm_ioctls
),
63 REG_IOCTL_GROUP(dm_grp_misc
)
65 static const struct ioctl_group dm_grp_block
= {
68 .devs_cnt
= ARRAY_SIZE(dm_devs
),
69 .sanitise
= dm_sanitise
,
71 .ioctls_cnt
= ARRAY_SIZE(dm_ioctls
),
74 REG_IOCTL_GROUP(dm_grp_block
)