Fix segfault when copy unaligned struct as aligned

Because context has one field which is aligned to 64B
(struct ocf_volume cache_volume) the compiler use vmovdqa (aligned)
instead of vmovdqu (unaligned) in reality the address is not 64 aligned,
it ends with 0x8, so we get this segfault.

Signed-off-by: Amir Haroush <amir.haroush@huawei.com>
Signed-off-by: Shai Fultheim <shai.fultheim@huawei.com>
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
Amir Haroush 2023-03-26 20:06:19 +03:00 committed by Robert Baldyga
parent a05a49a886
commit 22a697d09e

View File

@ -1,5 +1,6 @@
/*
* Copyright(c) 2012-2022 Intel Corporation
* Copyright(c) 2023 Huawei Technologies
* SPDX-License-Identifier: BSD-3-Clause
*/
@ -2632,7 +2633,7 @@ static void _ocf_mngt_cache_attach(ocf_cache_t cache,
context->pipeline = pipeline;
context->cache = cache;
context->cfg = *cfg;
memcpy(&context->cfg, cfg, sizeof(context->cfg));
OCF_PL_NEXT_RET(pipeline);
}
@ -2665,7 +2666,7 @@ static void _ocf_mngt_cache_load(ocf_cache_t cache,
context->pipeline = pipeline;
context->cache = cache;
context->cfg = *cfg;
memcpy(&context->cfg, cfg, sizeof(context->cfg));
OCF_PL_NEXT_RET(pipeline);
}
@ -2777,7 +2778,7 @@ static void _ocf_mngt_cache_standby_attach(ocf_cache_t cache,
context->pipeline = pipeline;
context->cache = cache;
context->cfg = *cfg;
memcpy(&context->cfg, cfg, sizeof(context->cfg));
OCF_PL_NEXT_RET(pipeline);
}
@ -2810,7 +2811,7 @@ static void _ocf_mngt_cache_standby_load(ocf_cache_t cache,
context->pipeline = pipeline;
context->cache = cache;
context->cfg = *cfg;
memcpy(&context->cfg, cfg, sizeof(context->cfg));
OCF_PL_NEXT_RET(pipeline);
}