[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 4/4] xen/public: Use -Wpadding for public headers
RFC. In theory this is a great way to avoid some of the spiketraps involved with C being the official representation. However, this doesn't build. gnttab_transfer has a layout that requires a CONFIG_COMPAT if we want to satisfy -Wpadding for both forms of the structure. Thoughts on whether this cross-check is worthwhile-enough to warrant the ifdefary? ~Andrew --- CC: George Dunlap <George.Dunlap@xxxxxxxxxx> CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx> CC: Julien Grall <julien@xxxxxxx> --- xen/common/Makefile | 1 + xen/common/hdr-chk.c | 13 +++++++++++++ xen/include/public/grant_table.h | 7 +++++++ 3 files changed, 21 insertions(+) create mode 100644 xen/common/hdr-chk.c diff --git a/xen/common/Makefile b/xen/common/Makefile index d512cad5243f..dbbda70829f1 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -15,6 +15,7 @@ obj-y += event_fifo.o obj-$(CONFIG_GRANT_TABLE) += grant_table.o obj-y += guestcopy.o obj-y += gzip/ +obj-y += hdr-chk.o obj-$(CONFIG_HYPFS) += hypfs.o obj-$(CONFIG_IOREQ_SERVER) += ioreq.o obj-y += irq.o diff --git a/xen/common/hdr-chk.c b/xen/common/hdr-chk.c new file mode 100644 index 000000000000..1c7a509dcd06 --- /dev/null +++ b/xen/common/hdr-chk.c @@ -0,0 +1,13 @@ +#include <xen/stdint.h> + +#include <public/xen.h> + +#pragma GCC diagnostic error "-Wpadded" + +#include <public/grant_table.h> + +#ifdef CONFIG_COMPAT + +#include <compat/grant_table.h> + +#endif /* CONFIG_COMPAT */ diff --git a/xen/include/public/grant_table.h b/xen/include/public/grant_table.h index 1dfa17a6d02a..a66c77d0166c 100644 --- a/xen/include/public/grant_table.h +++ b/xen/include/public/grant_table.h @@ -355,6 +355,7 @@ struct gnttab_unmap_grant_ref { grant_handle_t handle; /* OUT parameters. */ int16_t status; /* => enum grant_status */ + uint16_t _pad0; }; typedef struct gnttab_unmap_grant_ref gnttab_unmap_grant_ref_t; DEFINE_XEN_GUEST_HANDLE(gnttab_unmap_grant_ref_t); @@ -371,6 +372,7 @@ DEFINE_XEN_GUEST_HANDLE(gnttab_unmap_grant_ref_t); struct gnttab_setup_table { /* IN parameters. */ domid_t dom; + uint16_t _pad0; uint32_t nr_frames; /* OUT parameters. */ int16_t status; /* => enum grant_status */ @@ -409,9 +411,12 @@ struct gnttab_transfer { /* IN parameters. */ xen_pfn_t mfn; domid_t domid; + uint16_t _pad0; grant_ref_t ref; /* OUT parameters. */ int16_t status; + uint16_t _pad1; + /* XXX compat-dependent padding. */ }; typedef struct gnttab_transfer gnttab_transfer_t; DEFINE_XEN_GUEST_HANDLE(gnttab_transfer_t); @@ -468,10 +473,12 @@ DEFINE_XEN_GUEST_HANDLE(gnttab_copy_t); struct gnttab_query_size { /* IN parameters. */ domid_t dom; + uint16_t _ign1; /* OUT parameters. */ uint32_t nr_frames; uint32_t max_nr_frames; int16_t status; /* => enum grant_status */ + uint16_t _ign2; }; typedef struct gnttab_query_size gnttab_query_size_t; DEFINE_XEN_GUEST_HANDLE(gnttab_query_size_t); -- 2.30.2
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |