cbfs: do not pack struct cbfs_cachenode
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sun, 6 Oct 2019 22:37:45 +0000 (00:37 +0200)
committerBin Meng <bmeng.cn@gmail.com>
Sat, 2 Nov 2019 10:00:51 +0000 (18:00 +0800)
With the __packed attribute sandbox_defconfig cannot be compiled with GCC
9.2.1:

fs/cbfs/cbfs.c: In function ‘file_cbfs_fill_cache’:
fs/cbfs/cbfs.c:164:16: error: taking address of packed member of
‘struct cbfs_cachenode’ may result in an unaligned pointer value
[-Werror=address-of-packed-member]
  164 |   cache_tail = &new_node->next;
      |                ^~~~~~~~~~~~~~~

struct cbfs_cachenode is only an internal structure. So let's rearrange the
fields such that the structure is naturally packed and remove the __packed
attribute.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
include/cbfs.h

index 6d4c4d4b065a7b0295ae8fbd3cf0f1e8abea2ebf..f3bc8ca24afe573405ec39d428649898c476ad3b 100644 (file)
@@ -72,13 +72,13 @@ struct cbfs_fileheader {
 
 struct cbfs_cachenode {
        struct cbfs_cachenode *next;
-       u32 type;
        void *data;
-       u32 data_length;
        char *name;
+       u32 type;
+       u32 data_length;
        u32 name_length;
        u32 attributes_offset;
-} __packed;
+};
 
 extern enum cbfs_result file_cbfs_result;