Avoid compilers detect misaligned access
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1565766 Signed-off-by: Victor Toso <victortoso@redhat.com>
This commit is contained in:
parent
e5786513b8
commit
cfa50a2139
75
0001-qxl_dev-Align-QXLRam-to-4-bytes.patch
Normal file
75
0001-qxl_dev-Align-QXLRam-to-4-bytes.patch
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
From beda5ec7a6848be20c0cac2a9a8ef2a41e8069c1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Frediano Ziglio <fziglio@redhat.com>
|
||||||
|
Date: Thu, 28 Jun 2018 21:30:21 +0100
|
||||||
|
Subject: [PATCH] qxl_dev: Align QXLRam to 4 bytes
|
||||||
|
|
||||||
|
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@redhat.com>
|
||||||
|
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
|
||||||
|
---
|
||||||
|
spice/end-packed.h | 1 +
|
||||||
|
spice/qxl_dev.h | 2 +-
|
||||||
|
spice/start-packed.h | 2 ++
|
||||||
|
3 files changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
@ -1,12 +1,13 @@
|
|||||||
Name: spice-protocol
|
Name: spice-protocol
|
||||||
Version: 0.12.14
|
Version: 0.12.14
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: Spice protocol header files
|
Summary: Spice protocol header files
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
# Main headers are BSD, controller / foreign menu are LGPL
|
# Main headers are BSD, controller / foreign menu are LGPL
|
||||||
License: BSD and LGPLv2+
|
License: BSD and LGPLv2+
|
||||||
URL: http://www.spice-space.org/
|
URL: http://www.spice-space.org/
|
||||||
Source0: http://www.spice-space.org/download/releases/%{name}-%{version}.tar.bz2
|
Source0: http://www.spice-space.org/download/releases/%{name}-%{version}.tar.bz2
|
||||||
|
Patch0001: 0001-qxl_dev-Align-QXLRam-to-4-bytes.patch
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -17,6 +18,8 @@ and the para-virtual graphics card QXL.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
|
||||||
|
%patch0001 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure
|
%configure
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
@ -32,6 +35,10 @@ make DESTDIR=%{buildroot} install
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jul 13 2018 Victor Toso <victortoso@redhat.com> - 0.12.14-2
|
||||||
|
- Align QXLRam to 4 bytes to avoid compilers detect misaligned access
|
||||||
|
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1565766
|
||||||
|
|
||||||
* Thu Jun 07 2018 Christophe Fergeau <cfergeau@redhat.com> - 0.12.14-1
|
* Thu Jun 07 2018 Christophe Fergeau <cfergeau@redhat.com> - 0.12.14-1
|
||||||
- Update to 0.12.14 release
|
- Update to 0.12.14 release
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user