kernel: mmu: Fix access to unpacked member inside packed struct
The following warning is triggered by GCC when -Waddress-of-packed-member is enabled: /home/carles/src/zephyr/zephyr/kernel/mmu.c: In function 'free_page_frame_list_put': /home/carles/src/zephyr/zephyr/kernel/mmu.c:383:42: warning: taking address of packed member of 'struct z_page_frame' may result in an unaligned pointer value [-Waddress-of-packed-member] 383 | sys_slist_append(&free_page_frame_list, &pf->node); This is due to the fact that sys_snode_t node is an unpacked structure inside a packed z_page_frame structure, so that the alignment of the former cannot be ensured if placed inside the latter. Given that alignment of z_page_frame is ensured by the code, silence the compiler by going through an intermediate variable. More info in #16587. Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
This commit is contained in:
parent
6b46ea3d65
commit
2000cdf6dc
1 changed files with 4 additions and 1 deletions
|
|
@ -380,7 +380,10 @@ static void free_page_frame_list_put(struct z_page_frame *pf)
|
|||
{
|
||||
PF_ASSERT(pf, z_page_frame_is_available(pf),
|
||||
"unavailable page put on free list");
|
||||
sys_slist_append(&free_page_frame_list, &pf->node);
|
||||
/* The structure is packed, which ensures that this is true */
|
||||
void *node = pf;
|
||||
|
||||
sys_slist_append(&free_page_frame_list, node);
|
||||
z_free_page_count++;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue