Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] `struct hv_input_create_device_domain` is missing a 4-byte padding field, resulting in a non-standard 28-byte size. --
commit 267ecd2e71d0d7f097fc4d970780fef12801efc5 Author: Wei Liu <[email protected]> hyperv: Introduce new hypercall interfaces used by Hyper-V guest IOMMU This commit introduces new hypercall definitions to allow a child partition to interact with the para-virtualized Hyper-V guest IOMMU. It includes interfaces for capability detection, device/domain management, and IOTLB flushing. [ ... ] > diff --git a/include/hyperv/hvhdk_mini.h b/include/hyperv/hvhdk_mini.h > index b4cb2fa26e9bc..493608e791b45 100644 > --- a/include/hyperv/hvhdk_mini.h > +++ b/include/hyperv/hvhdk_mini.h [ ... ] > +union hv_create_device_domain_flags { > + u32 as_uint32; > + struct { > + u32 forward_progress_required: 1; > + u32 inherit_owning_vtl: 1; > + u32 reserved: 30; > + } __packed; > +}; > + > +struct hv_input_create_device_domain { > + struct hv_input_device_domain device_domain; > + union hv_create_device_domain_flags create_device_domain_flags; > +} __packed; [Severity: Medium] Does this structure need an explicit 4-byte padding field at the end to ensure its size is a multiple of 8 bytes? Because the struct is packed and lacks tail padding, its size is exactly 28 bytes. These structures are often initialized on a reused per-CPU page like this: hv_create_device_domain() { ... memset(input, 0, sizeof(*input)); ... } If the hypervisor expects an 8-byte aligned 32-byte input for this hypercall, the memset will only clear the first 28 bytes. This leaves 4 bytes of uninitialized garbage from previous hypercalls in the tail end of the buffer, which might cause domain creation to fail if the hypervisor strictly validates padding fields to be zero. [ ... ] -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=1
