summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2026-02-02 23:48:07 +0100
committerMichael S. Tsirkin <mst@redhat.com>2026-02-09 12:21:32 -0500
commitebcff9dacaf2c1418f8bc927388186d7d3674603 (patch)
tree8d02abcf6245f824c5f53d6f6f94d31a22de1a02 /include
parent5145b277309f3818e2db507f525d19ac3b910922 (diff)
vduse: avoid adding implicit padding
The vduse_iova_range_v2 and vduse_iotlb_entry_v2 structures are both defined in a way that adds implicit padding and is incompatible between i386 and x86_64 userspace because of the different structure alignment requirements. Building the header with -Wpadded shows these new warnings: vduse.h:305:1: error: padding struct size to alignment boundary with 4 bytes [-Werror=padded] vduse.h:374:1: error: padding struct size to alignment boundary with 4 bytes [-Werror=padded] Change the amount of padding in these two structures to align them to 64 bit words and avoid those problems. Since the v1 vduse_iotlb_entry already has an inconsistent size, do not attempt to reuse the structure but rather list the members indiviudally, with a fixed amount of padding. Fixes: 079212f6877e ("vduse: add vq group asid support") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Message-Id: <20260202224835.559538-1-arnd@kernel.org>
Diffstat (limited to 'include')
-rw-r--r--include/uapi/linux/vduse.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/include/uapi/linux/vduse.h b/include/uapi/linux/vduse.h
index 68b4287f9fac..361eea511c21 100644
--- a/include/uapi/linux/vduse.h
+++ b/include/uapi/linux/vduse.h
@@ -293,9 +293,13 @@ struct vduse_iova_info {
* Structure used by VDUSE_IOTLB_GET_FD2 ioctl to find an overlapped IOVA region.
*/
struct vduse_iotlb_entry_v2 {
- struct vduse_iotlb_entry v1;
+ __u64 offset;
+ __u64 start;
+ __u64 last;
+ __u8 perm;
+ __u8 padding[7];
__u32 asid;
- __u32 reserved[12];
+ __u32 reserved[11];
};
/*
@@ -365,6 +369,7 @@ struct vduse_iova_range_v2 {
__u64 start;
__u64 last;
__u32 asid;
+ __u32 padding;
};
/**