Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> On Tue, Jul 10, 2018 at 01:18:42PM +0100, Frediano Ziglio wrote: > This avoids compilers detect misaligned access which can lead to > warnings. > In QEMU the structure is allocated at the beginning of a 4Kb page, > in Xspice is allocated with a calloc, so the structure will end up 4 > bytes aligned as well with these users. We are not aware of other users > of QXLRam, but if there was, it's likely the struct would be at least > naturally aligned, so this change should not impact anyone. > Aligning to 4 bytes maintains the size of the structure unchanged > avoiding possible ABI changes. > clang currently generates an invalid function call if a misaligned > 4 byte atomic operation is detected. > > This fixes https://bugzilla.redhat.com/show_bug.cgi?id=1565766 > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > --- > spice/end-packed.h | 1 + > spice/qxl_dev.h | 2 +- > spice/start-packed.h | 2 ++ > 3 files changed, 4 insertions(+), 1 deletion(-) > > Changes since v1: > - improve commit message. > > diff --git a/spice/end-packed.h b/spice/end-packed.h > index 1acea18..0efd588 100644 > --- a/spice/end-packed.h > +++ b/spice/end-packed.h > @@ -32,6 +32,7 @@ > /* See start-packed.h for details */ > > #undef SPICE_ATTR_PACKED > +#undef SPICE_ATTR_ALIGNED > > #if defined(__MINGW32__) || !defined(__GNUC__) > #pragma pack(pop) > diff --git a/spice/qxl_dev.h b/spice/qxl_dev.h > index 9e753c4..a9cc4f4 100644 > --- a/spice/qxl_dev.h > +++ b/spice/qxl_dev.h > @@ -253,7 +253,7 @@ SPICE_RING_DECLARE(QXLReleaseRing, uint64_t, QXL_RELEASE_RING_SIZE); > #define QXL_INTERRUPT_CLIENT_MONITORS_CONFIG (1 << 5) > > /* qxl-1 compat: append only */ > -typedef struct SPICE_ATTR_PACKED QXLRam { > +typedef struct SPICE_ATTR_ALIGNED(4) SPICE_ATTR_PACKED QXLRam { > uint32_t magic; > uint32_t int_pending; > uint32_t int_mask; > diff --git a/spice/start-packed.h b/spice/start-packed.h > index ab3fa98..de0c595 100644 > --- a/spice/start-packed.h > +++ b/spice/start-packed.h > @@ -48,6 +48,7 @@ > #ifdef __GNUC__ > > #define SPICE_ATTR_PACKED __attribute__ ((__packed__)) > +#define SPICE_ATTR_ALIGNED(n) __attribute__ ((__aligned__ (n))) > > #ifdef __MINGW32__ > #pragma pack(push,1) > @@ -58,6 +59,7 @@ > #pragma pack(push) > #pragma pack(1) > #define SPICE_ATTR_PACKED > +#define SPICE_ATTR_ALIGNED(n) __declspec (align (n)) > #pragma warning(disable:4200) > #pragma warning(disable:4103) > > -- > 2.17.1 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel