@@ -32,6 +32,7 @@ struct btrfs_ioctl_vol_args {
__s64 fd;
char name[BTRFS_PATH_NAME_MAX + 1];
};
+static_assert(sizeof(struct btrfs_ioctl_vol_args) == 4096);
#define BTRFS_DEVICE_PATH_NAME_MAX 1024
#define BTRFS_SUBVOL_NAME_MAX 4039
@@ -190,6 +191,7 @@ struct btrfs_ioctl_scrub_args {
/* pad to 1k */
__u64 unused[(1024-32-sizeof(struct btrfs_scrub_progress))/8];
};
+static_assert(sizeof(struct btrfs_ioctl_scrub_args) == 1024);
#define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS 0
#define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID 1
@@ -242,6 +244,7 @@ struct btrfs_ioctl_dev_info_args {
__u64 unused[379]; /* pad to 4k */
__u8 path[BTRFS_DEVICE_PATH_NAME_MAX]; /* out */
};
+static_assert(sizeof(struct btrfs_ioctl_dev_info_args) == 4096);
/*
* Retrieve information about the filesystem
@@ -270,7 +273,7 @@ struct btrfs_ioctl_fs_info_args {
__u8 metadata_uuid[BTRFS_FSID_SIZE]; /* out */
__u8 reserved[952]; /* pad to 1k */
};
-
+static_assert(sizeof(struct btrfs_ioctl_fs_info_args) == 1024);
/*
* feature flags
@@ -453,6 +456,7 @@ struct btrfs_ioctl_balance_args {
__u64 unused[72]; /* pad to 1k */
};
+static_assert(sizeof(struct btrfs_ioctl_balance_args) == 1024);
#define BTRFS_INO_LOOKUP_PATH_MAX 4080
struct btrfs_ioctl_ino_lookup_args {
@@ -460,6 +464,7 @@ struct btrfs_ioctl_ino_lookup_args {
__u64 objectid;
char name[BTRFS_INO_LOOKUP_PATH_MAX];
};
+static_assert(sizeof(struct btrfs_ioctl_ino_lookup_args) == 4096);
#define BTRFS_INO_LOOKUP_USER_PATH_MAX (4080 - BTRFS_VOL_NAME_MAX - 1)
struct btrfs_ioctl_ino_lookup_user_args {
@@ -475,6 +480,7 @@ struct btrfs_ioctl_ino_lookup_user_args {
*/
char path[BTRFS_INO_LOOKUP_USER_PATH_MAX];
};
+static_assert(sizeof(struct btrfs_ioctl_ino_lookup_user_args) == 4096);
/* Search criteria for the btrfs SEARCH ioctl family. */
struct btrfs_ioctl_search_key {
@@ -553,6 +559,7 @@ struct btrfs_ioctl_search_args {
struct btrfs_ioctl_search_key key;
char buf[BTRFS_SEARCH_ARGS_BUFSIZE];
};
+static_assert(sizeof(struct btrfs_ioctl_search_args) == 4096);
struct btrfs_ioctl_search_args_v2 {
struct btrfs_ioctl_search_key key; /* in/out - search parameters */
@@ -710,6 +717,7 @@ struct btrfs_ioctl_get_dev_stats {
*/
__u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX];
};
+static_assert(sizeof(struct btrfs_ioctl_get_dev_stats) == 1032);
#define BTRFS_QUOTA_CTL_ENABLE 1
#define BTRFS_QUOTA_CTL_DISABLE 2
When expanding ioctl interfaces we want to make sure we're not changing the size of the structures, otherwise it can lead to incorrect transfers between kernel and user-space. Build time assert the size of each structure so we're not running into any incompatibilities. Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> --- include/uapi/linux/btrfs.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)