mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 13:16:22 +00:00
ocfs2: replace zero-length arrays with DECLARE_FLEX_ARRAY() helper
Zero-length arrays are deprecated and we are moving towards adopting C99 flexible-array members, instead. So, replace zero-length array declarations in a couple of structures and unions with the new DECLARE_FLEX_ARRAY() helper macro. This helper allows for a flexible-array member in a union and as only member in a structure. Also, this addresses multiple warnings reported when building with Clang-15 and -Wzero-length-array. Lastly, this will also help memcpy (in a coming hardening update) execute proper bounds-checking on variable length object i_symlink at fs/ocfs2/namei.c:1973: fs/ocfs2/namei.c: 1973 memcpy((char *) fe->id2.i_symlink, symname, l); Link: https://github.com/KSPP/linux/issues/21 Link: https://github.com/KSPP/linux/issues/193 Link: https://github.com/KSPP/linux/issues/197 Link: https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html Link: https://lkml.kernel.org/r/YxKY6O2hmdwNh8r8@work Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> Reviewed-by: Kees Cook <keescook@chromium.org> Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com> Cc: Mark Fasheh <mark@fasheh.com> Cc: Joel Becker <jlbec@evilplan.org> Cc: Junxiao Bi <junxiao.bi@oracle.com> Cc: Changwei Ge <gechangwei@live.cn> Cc: Gang He <ghe@suse.com> Cc: Jun Piao <piaojun@huawei.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
b814751175
commit
6e4a53ee79
@ -527,7 +527,7 @@ struct ocfs2_extent_block
|
||||
* value -1 (0xFFFF) is OCFS2_INVALID_SLOT. This marks a slot empty.
|
||||
*/
|
||||
struct ocfs2_slot_map {
|
||||
/*00*/ __le16 sm_slots[0];
|
||||
/*00*/ DECLARE_FLEX_ARRAY(__le16, sm_slots);
|
||||
/*
|
||||
* Actual on-disk size is one block. OCFS2_MAX_SLOTS is 255,
|
||||
* 255 * sizeof(__le16) == 512B, within the 512B block minimum blocksize.
|
||||
@ -548,7 +548,7 @@ struct ocfs2_extended_slot {
|
||||
* i_size.
|
||||
*/
|
||||
struct ocfs2_slot_map_extended {
|
||||
/*00*/ struct ocfs2_extended_slot se_slots[0];
|
||||
/*00*/ DECLARE_FLEX_ARRAY(struct ocfs2_extended_slot, se_slots);
|
||||
/*
|
||||
* Actual size is i_size of the slot_map system file. It should
|
||||
* match s_max_slots * sizeof(struct ocfs2_extended_slot)
|
||||
@ -727,7 +727,7 @@ struct ocfs2_dinode {
|
||||
struct ocfs2_extent_list i_list;
|
||||
struct ocfs2_truncate_log i_dealloc;
|
||||
struct ocfs2_inline_data i_data;
|
||||
__u8 i_symlink[0];
|
||||
DECLARE_FLEX_ARRAY(__u8, i_symlink);
|
||||
} id2;
|
||||
/* Actual on-disk size is one block */
|
||||
};
|
||||
@ -892,7 +892,7 @@ struct ocfs2_group_desc
|
||||
/*30*/ struct ocfs2_block_check bg_check; /* Error checking */
|
||||
__le64 bg_reserved2;
|
||||
/*40*/ union {
|
||||
__u8 bg_bitmap[0];
|
||||
DECLARE_FLEX_ARRAY(__u8, bg_bitmap);
|
||||
struct {
|
||||
/*
|
||||
* Block groups may be discontiguous when
|
||||
|
Loading…
Reference in New Issue
Block a user