include/uapi/linux/iommufd.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
Though the padding could be done by the compiler, add a 32-bit padding
explicitly. Also, change the __u64 to __aligned_u64.
pahole result, before:
struct iommu_hwpt_pgfault {
__u32 flags; /* 0 4 */
__u32 dev_id; /* 4 4 */
__u32 pasid; /* 8 4 */
__u32 grpid; /* 12 4 */
__u32 perm; /* 16 4 */
/* XXX 4 bytes hole, try to pack */
__u64 addr; /* 24 8 */
__u32 length; /* 32 4 */
__u32 cookie; /* 36 4 */
/* size: 40, cachelines: 1, members: 8 */
/* sum members: 36, holes: 1, sum holes: 4 */
/* last cacheline: 40 bytes */
};
pahole result, after:
struct iommu_hwpt_pgfault {
__u32 flags; /* 0 4 */
__u32 dev_id; /* 4 4 */
__u32 pasid; /* 8 4 */
__u32 grpid; /* 12 4 */
__u32 perm; /* 16 4 */
__u32 __reserved; /* 20 4 */
__u64 addr __attribute__((__aligned__(8))); /* 24 8 */
__u32 length; /* 32 4 */
__u32 cookie; /* 36 4 */
/* size: 40, cachelines: 1, members: 9 */
/* forced alignments: 1 */
/* last cacheline: 40 bytes */
} __attribute__((__aligned__(8)));
Fixes: c714f15860fc ("iommufd: Add fault and response message definitions")
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
---
include/uapi/linux/iommufd.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/uapi/linux/iommufd.h b/include/uapi/linux/iommufd.h
index 34810f6ae2b5..78747b24bd0f 100644
--- a/include/uapi/linux/iommufd.h
+++ b/include/uapi/linux/iommufd.h
@@ -868,6 +868,7 @@ enum iommu_hwpt_pgfault_perm {
* @pasid: Process Address Space ID
* @grpid: Page Request Group Index
* @perm: Combination of enum iommu_hwpt_pgfault_perm
+ * @__reserved: Must be 0.
* @addr: Fault address
* @length: a hint of how much data the requestor is expecting to fetch. For
* example, if the PRI initiator knows it is going to do a 10MB
@@ -883,7 +884,8 @@ struct iommu_hwpt_pgfault {
__u32 pasid;
__u32 grpid;
__u32 perm;
- __u64 addr;
+ __u32 __reserved;
+ __aligned_u64 addr;
__u32 length;
__u32 cookie;
};
--
2.34.1
> From: Nicolin Chen <nicolinc@nvidia.com>
> Sent: Saturday, January 18, 2025 10:37 AM
>
> @@ -868,6 +868,7 @@ enum iommu_hwpt_pgfault_perm {
> * @pasid: Process Address Space ID
> * @grpid: Page Request Group Index
> * @perm: Combination of enum iommu_hwpt_pgfault_perm
> + * @__reserved: Must be 0.
iommufd_fault_fops_read() doesn't follow this statement as
hwpt_fault is on stack with that field uninitialized.
On Mon, Jan 20, 2025 at 05:44:27AM +0000, Tian, Kevin wrote:
> > From: Nicolin Chen <nicolinc@nvidia.com>
> > Sent: Saturday, January 18, 2025 10:37 AM
> >
> > @@ -868,6 +868,7 @@ enum iommu_hwpt_pgfault_perm {
> > * @pasid: Process Address Space ID
> > * @grpid: Page Request Group Index
> > * @perm: Combination of enum iommu_hwpt_pgfault_perm
> > + * @__reserved: Must be 0.
>
> iommufd_fault_fops_read() doesn't follow this statement as
> hwpt_fault is on stack with that field uninitialized.
OK. I guess I should update the iommufd_fault_fops_read too.
Thanks
Nic
© 2016 - 2026 Red Hat, Inc.