[Spice-devel] [PATCH spice-server 2/2] dcc: Avoid usage of not aligned GlzEncDictRestoreData structure
Frediano Ziglio
fziglio at redhat.com
Wed May 8 13:06:59 UTC 2019
Copy to/from unaligned field to avoid potential unaligned access.
Although it adds a copy it's not in a hot path (migration) and
the structure is pretty small.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/dcc-send.c | 4 +++-
server/dcc.c | 3 ++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/server/dcc-send.c b/server/dcc-send.c
index e9b01b38..9fc54046 100644
--- a/server/dcc-send.c
+++ b/server/dcc-send.c
@@ -1845,8 +1845,10 @@ static void display_channel_marshall_migrate_data(RedChannelClient *rcc,
memcpy(display_data.pixmap_cache_clients, dcc->priv->pixmap_cache->sync,
sizeof(display_data.pixmap_cache_clients));
+ GlzEncDictRestoreData glz_dict_data;
image_encoders_glz_get_restore_data(encoders, &display_data.glz_dict_id,
- &display_data.glz_dict_data);
+ &glz_dict_data);
+ display_data.glz_dict_data = glz_dict_data;
/* all data besided the surfaces ref */
spice_marshaller_add(base_marshaller,
diff --git a/server/dcc.c b/server/dcc.c
index fdb0fbf1..271a466b 100644
--- a/server/dcc.c
+++ b/server/dcc.c
@@ -1251,10 +1251,11 @@ bool dcc_handle_message(RedChannelClient *rcc, uint16_t type, uint32_t size, voi
static int dcc_handle_migrate_glz_dictionary(DisplayChannelClient *dcc,
SpiceMigrateDataDisplay *migrate)
{
+ GlzEncDictRestoreData glz_dict_data = migrate->glz_dict_data;
return image_encoders_restore_glz_dictionary(&dcc->priv->encoders,
red_channel_client_get_client(RED_CHANNEL_CLIENT(dcc)),
migrate->glz_dict_id,
- &migrate->glz_dict_data);
+ &glz_dict_data);
}
static bool restore_surface(DisplayChannelClient *dcc, uint32_t surface_id)
--
2.20.1
More information about the Spice-devel
mailing list