OSDN Git Service

fs: Replace zero-length array with flexible-array member
authorGustavo A. R. Silva <gustavoars@kernel.org>
Mon, 31 Aug 2020 13:25:42 +0000 (08:25 -0500)
committerGustavo A. R. Silva <gustavoars@kernel.org>
Thu, 29 Oct 2020 22:22:59 +0000 (17:22 -0500)
There is a regular need in the kernel to provide a way to declare having a
dynamically sized set of trailing elements in a structure. Kernel code should
always use “flexible array members”[1] for these cases. The older style of
one-element or zero-length arrays should no longer be used[2].

[1] https://en.wikipedia.org/wiki/Flexible_array_member
[2] https://www.kernel.org/doc/html/v5.9-rc1/process/deprecated.html#zero-length-and-one-element-arrays

Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
fs/binfmt_elf.c
fs/hfs/btree.h
fs/hfsplus/hfsplus_fs.h
fs/isofs/rock.h
fs/select.c
include/linux/fs.h

index b6b3d05..fa50e89 100644 (file)
@@ -1690,7 +1690,7 @@ struct elf_thread_core_info {
        struct elf_thread_core_info *next;
        struct task_struct *task;
        struct elf_prstatus prstatus;
-       struct memelfnote notes[0];
+       struct memelfnote notes[];
 };
 
 struct elf_note_info {
index dcc2aab..4ba45ca 100644 (file)
@@ -60,7 +60,7 @@ struct hfs_bnode {
        wait_queue_head_t lock_wq;
        atomic_t refcnt;
        unsigned int page_offset;
-       struct page *page[0];
+       struct page *page[];
 };
 
 #define HFS_BNODE_ERROR                0
index 3b03fff..a92de51 100644 (file)
@@ -117,7 +117,7 @@ struct hfs_bnode {
        wait_queue_head_t lock_wq;
        atomic_t refcnt;
        unsigned int page_offset;
-       struct page *page[0];
+       struct page *page[];
 };
 
 #define HFS_BNODE_LOCK         0
index 1558cf2..ee9660e 100644 (file)
@@ -22,7 +22,7 @@ struct SU_ER_s {
        __u8 len_des;
        __u8 len_src;
        __u8 ext_ver;
-       __u8 data[0];
+       __u8 data[];
 } __attribute__ ((packed));
 
 struct RR_RR_s {
@@ -44,7 +44,7 @@ struct RR_PN_s {
 struct SL_component {
        __u8 flags;
        __u8 len;
-       __u8 text[0];
+       __u8 text[];
 } __attribute__ ((packed));
 
 struct RR_SL_s {
@@ -54,7 +54,7 @@ struct RR_SL_s {
 
 struct RR_NM_s {
        __u8 flags;
-       char name[0];
+       char name[];
 } __attribute__ ((packed));
 
 struct RR_CL_s {
@@ -71,7 +71,7 @@ struct stamp {
 
 struct RR_TF_s {
        __u8 flags;
-       struct stamp times[0];  /* Variable number of these beasts */
+       struct stamp times[];   /* Variable number of these beasts */
 } __attribute__ ((packed));
 
 /* Linux-specific extension for transparent decompression */
index 7aef495..ebfebdf 100644 (file)
@@ -97,7 +97,7 @@ u64 select_estimate_accuracy(struct timespec64 *tv)
 struct poll_table_page {
        struct poll_table_page * next;
        struct poll_table_entry * entry;
-       struct poll_table_entry entries[0];
+       struct poll_table_entry entries[];
 };
 
 #define POLL_TABLE_FULL(table) \
@@ -836,7 +836,7 @@ SYSCALL_DEFINE1(old_select, struct sel_arg_struct __user *, arg)
 struct poll_list {
        struct poll_list *next;
        int len;
-       struct pollfd entries[0];
+       struct pollfd entries[];
 };
 
 #define POLLFD_PER_PAGE  ((PAGE_SIZE-sizeof(struct poll_list)) / sizeof(struct pollfd))
index 0bd1264..21cc971 100644 (file)
@@ -3285,7 +3285,7 @@ static inline ino_t parent_ino(struct dentry *dentry)
  */
 struct simple_transaction_argresp {
        ssize_t size;
-       char data[0];
+       char data[];
 };
 
 #define SIMPLE_TRANSACTION_LIMIT (PAGE_SIZE - sizeof(struct simple_transaction_argresp))