fsnotify: Avoid -Wflex-array-member-not-at-end warning
Subsystems (2)
PATCH v2 1/1 fsnotify: Avoid -Wflex-array-member-not-at-end warning
Use the DEFINE_FLEX() helper for an on-stack definition of a flexible structure where the size of the flexible-array member is known at compile-time, and refactor the rest of the code, accordingly.
So, with these changes, fix the following warning:fs/notify/fdinfo.c:45:36: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
---
Changes in v2:
- Use DEFINE_FLEX() instead of struct_group_tagged().
v1:
- Link: https://lore.kernel.org/linux-hardening/ZeeaRuTpuxInH6ZB@neat/
fs/notify/fdinfo.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-)
fs/notify/fdinfo.c +8 -12
@@ -41,29 +41,25 @@ static void show_fdinfo(struct seq_file *m, struct file *f,#if defined(CONFIG_EXPORTFS )static void show_mark_fhandle (struct seq_file *m,struct inode *inode) { -struct { -struct file_handle handle; -u8 pad[MAX_HANDLE_SZ ]; - } f; + DEFINE_FLEX(struct file_handle, f, f_handle, handle_bytes, MAX_HANDLE_SZ);int size, ret, i; - f.handle.handle_bytes =sizeof (f.pad); - size = f.handle.handle_bytes >>2 ; + size = f->handle_bytes >>2 ; - ret =exportfs_encode_fid (inode, (struct fid *)f.handle.f_handle, &size); + ret =exportfs_encode_fid (inode, (struct fid *)f->f_handle, &size);if ((ret ==FILEID_INVALID ) || (ret <0 )) {WARN_ONCE (1 ,"Can't encode file handler for inotify: %d\n" , ret);return ; } - f.handle.handle_type = ret; - f.handle.handle_bytes = size *sizeof (u32); + f->handle_type = ret; + f->handle_bytes = size *sizeof (u32);seq_printf (m,"fhandle-bytes:%x fhandle-type:%x f_handle:" , - f.handle.handle_bytes, f.handle.handle_type); + f->handle_bytes, f->handle_type); -for (i =0 ; i < f.handle.handle_bytes; i++) -seq_printf (m,"%02x" , (int )f.handle.f_handle[i]); +for (i =0 ; i < f->handle_bytes; i++) +seq_printf (m,"%02x" , (int )f->f_handle[i]); }#else static void show_mark_fhandle (struct seq_file *m,struct inode *inode)
Signature · 1 line
2.34.1
Jan Kara
maintainerQuoted 10 lines · Gustavo A. R. Silva
Use the
DEFINE_FLEX()helper for an on-stack definition of a flexible structure where the size of the flexible-array member is known at compile-time, and refactor the rest of the code, accordingly.So, with these changes, fix the following warning:
fs/notify/fdinfo.c:45:36: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
Nice! I've added the patch to my tree.
Honza
Quoted 55 lines
---
Changes in v2:
- UseDEFINE_FLEX()instead ofstruct_group_tagged().v1:
- Link: https://lore.kernel.org/linux-hardening/ZeeaRuTpuxInH6ZB@neat/fs/notify/fdinfo.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-)fs/notify/fdinfo.c +8
-12@@ -41,29 +41,25 @@ static void show_fdinfo(struct seq_file *m, struct file *f,#if defined(CONFIG_EXPORTFS )static void show_mark_fhandle (struct seq_file *m,struct inode *inode) { -struct { -struct file_handle handle; -u8 pad[MAX_HANDLE_SZ ]; - } f; + DEFINE_FLEX(struct file_handle, f, f_handle, handle_bytes, MAX_HANDLE_SZ);int size, ret, i; - f.handle.handle_bytes =sizeof (f.pad); - size = f.handle.handle_bytes >>2 ; + size = f->handle_bytes >>2 ; - ret =exportfs_encode_fid (inode, (struct fid *)f.handle.f_handle, &size); + ret =exportfs_encode_fid (inode, (struct fid *)f->f_handle, &size);if ((ret ==FILEID_INVALID ) || (ret <0 )) {WARN_ONCE (1 ,"Can't encode file handler for inotify: %d\n" , ret);return ; } - f.handle.handle_type = ret; - f.handle.handle_bytes = size *sizeof (u32); + f->handle_type = ret; + f->handle_bytes = size *sizeof (u32);seq_printf (m,"fhandle-bytes:%x fhandle-type:%x f_handle:" , - f.handle.handle_bytes, f.handle.handle_type); + f->handle_bytes, f->handle_type); -for (i =0 ; i < f.handle.handle_bytes; i++) -seq_printf (m,"%02x" , (int )f.handle.f_handle[i]); +for (i =0 ; i < f->handle_bytes; i++) +seq_printf (m,"%02x" , (int )f->f_handle[i]); }#else static void show_mark_fhandle (struct seq_file *m,struct inode *inode)Signature · 1 line
2.34.1
Signature · 2 lines
Jan Kara <[email protected]> SUSE Labs, CR