Re: [PATCH spice-protocol v2] qxl_dev: Align QXLRam to 4 bytes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]