[PATCH spice-protocol v3] stats: Avoid holes in SpiceStat structure

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

 



The SpiceStat structure can be 20 or 24 bytes depending on alignment.
Being a memory mapped structure potentially used with lockless access,
it is not good to have it unaligned.
The current tool that reads this memory mapped file (reds_stats) is
able to detect if the structure is either 20 or 24 bytes and act
accordingly so changing this structure won't affect the behaviour
(unless you have an old tool but as they are usually packaged together
this is quite improbable).
This will also help on Windows as in that system it is not possible for
reds_stats to implement the same discovery trick implemented on Linux.
On Windows it is not possible to read the size of the file mapping
(on Windows to implement shared memory you can use a file mapping
not associated to a file).
The structure will change layout only on 32-bit architectures which is
not recommended nowadays (the 64-bit platforms that we support align
64-bit integers to 64 bits).

Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
---
 spice/stats.h | 2 ++
 1 file changed, 2 insertions(+)

Changes since v2:
- typos and grammar.

Changes since v1:
- update commit message and comment.

diff --git a/spice/stats.h b/spice/stats.h
index d4c45ab..44c6482 100644
--- a/spice/stats.h
+++ b/spice/stats.h
@@ -66,6 +66,8 @@ typedef struct SpiceStat {
     uint32_t generation;
     uint32_t num_of_nodes;
     uint32_t root_index;
+    /* to avoid holes in the structure on some platforms */
+    uint32_t padding;
     SpiceStatNode nodes[];
 } SpiceStat;
 
-- 
2.20.1

_______________________________________________
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]