2023-11-28 18:23:11

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH][next] bcachefs: Replace zero-length arrays with flexible-array members

Fake flexible arrays (zero-length and one-element arrays) are
deprecated, and should be replaced by flexible-array members.

So, replace zero-length arrays with flexible-array members
in multiple structures.

Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
fs/bcachefs/bcachefs_ioctl.h | 4 ++--
fs/bcachefs/io_read.c | 2 +-
fs/bcachefs/move.c | 2 +-
fs/bcachefs/replicas_types.h | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/fs/bcachefs/bcachefs_ioctl.h b/fs/bcachefs/bcachefs_ioctl.h
index 44ba7a87aea7..43822c17297c 100644
--- a/fs/bcachefs/bcachefs_ioctl.h
+++ b/fs/bcachefs/bcachefs_ioctl.h
@@ -276,7 +276,7 @@ struct bch_ioctl_fs_usage {
__u32 replica_entries_bytes;
__u32 pad;

- struct bch_replicas_usage replicas[0];
+ struct bch_replicas_usage replicas[];
};

/*
@@ -313,7 +313,7 @@ struct bch_ioctl_dev_usage_v2 {
__u32 bucket_size;
__u64 nr_buckets;

- struct bch_ioctl_dev_usage_type d[0];
+ struct bch_ioctl_dev_usage_type d[];
};

/*
diff --git a/fs/bcachefs/io_read.c b/fs/bcachefs/io_read.c
index 3281c4dd1d52..4c9eaf7cea8d 100644
--- a/fs/bcachefs/io_read.c
+++ b/fs/bcachefs/io_read.c
@@ -80,7 +80,7 @@ struct promote_op {
struct bpos pos;

struct data_update write;
- struct bio_vec bi_inline_vecs[0]; /* must be last */
+ struct bio_vec bi_inline_vecs[]; /* must be last */
};

static const struct rhashtable_params bch_promote_params = {
diff --git a/fs/bcachefs/move.c b/fs/bcachefs/move.c
index c5518a866276..5a693c3e2ed2 100644
--- a/fs/bcachefs/move.c
+++ b/fs/bcachefs/move.c
@@ -81,7 +81,7 @@ struct moving_io {

struct data_update write;
/* Must be last since it is variable size */
- struct bio_vec bi_inline_vecs[0];
+ struct bio_vec bi_inline_vecs[];
};

static void move_free(struct moving_io *io)
diff --git a/fs/bcachefs/replicas_types.h b/fs/bcachefs/replicas_types.h
index 030324078bba..ac90d142c4e8 100644
--- a/fs/bcachefs/replicas_types.h
+++ b/fs/bcachefs/replicas_types.h
@@ -21,7 +21,7 @@ struct replicas_delta_list {
u64 nr_inodes;
u64 persistent_reserved[BCH_REPLICAS_MAX];
struct {} memset_end;
- struct replicas_delta d[0];
+ struct replicas_delta d[];
};

#endif /* _BCACHEFS_REPLICAS_TYPES_H */
--
2.34.1


2023-11-29 20:16:03

by Kees Cook

[permalink] [raw]
Subject: Re: [PATCH][next] bcachefs: Replace zero-length arrays with flexible-array members

On Tue, Nov 28, 2023 at 12:22:55PM -0600, Gustavo A. R. Silva wrote:
> Fake flexible arrays (zero-length and one-element arrays) are
> deprecated, and should be replaced by flexible-array members.
>
> So, replace zero-length arrays with flexible-array members
> in multiple structures.
>
> Signed-off-by: Gustavo A. R. Silva <[email protected]>

These look like straight-forward conversions. Thanks!

Reviewed-by: Kees Cook <[email protected]>

--
Kees Cook

2023-11-29 20:26:35

by Gustavo A. R. Silva

[permalink] [raw]
Subject: Re: [PATCH][next] bcachefs: Replace zero-length arrays with flexible-array members



On 11/29/23 14:15, Kees Cook wrote:
> On Tue, Nov 28, 2023 at 12:22:55PM -0600, Gustavo A. R. Silva wrote:
>> Fake flexible arrays (zero-length and one-element arrays) are
>> deprecated, and should be replaced by flexible-array members.
>>
>> So, replace zero-length arrays with flexible-array members
>> in multiple structures.
>>
>> Signed-off-by: Gustavo A. R. Silva <[email protected]>
>
> These look like straight-forward conversions. Thanks!

Yep, these also fix a buch of -Warray-bounds warnings reported
by 0-day:

https://lore.kernel.org/lkml/[email protected]/

>
> Reviewed-by: Kees Cook <[email protected]>
>

Thanks!
--
Gustavo

2023-11-29 21:13:11

by Kent Overstreet

[permalink] [raw]
Subject: Re: [PATCH][next] bcachefs: Replace zero-length arrays with flexible-array members

On Tue, Nov 28, 2023 at 12:22:55PM -0600, Gustavo A. R. Silva wrote:
> Fake flexible arrays (zero-length and one-element arrays) are
> deprecated, and should be replaced by flexible-array members.
>
> So, replace zero-length arrays with flexible-array members
> in multiple structures.
>
> Signed-off-by: Gustavo A. R. Silva <[email protected]>

There are some ZLAs I hadn't converted because they led to new warnings
- in particular, array of flexible members.

I don't think that applies to any of the ones you changed
(replicas_delta_list, maybe?) - but it's something we need to figure
out if we're getting serious about this.