Message ID | ZrDxUhm5bqCKU9a9@cute (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [next] sched: act_ct: avoid -Wflex-array-member-not-at-end warning | expand |
On Mon, Aug 05, 2024 at 09:35:46AM -0600, Gustavo A. R. Silva wrote: > -Wflex-array-member-not-at-end was introduced in GCC-14, and we are > getting ready to enable it, globally. > > Move the conflicting declaration to the end of the structure. Notice > that `struct zones_ht_key` is a flexible structure --a structure that > contains a flexible-array member. > > Fix the following warning: > net/sched/act_ct.c:57:29: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] > > Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> Reviewed-by: Simon Horman <horms@kernel.org>
On Mon, 5 Aug 2024 09:35:46 -0600 Gustavo A. R. Silva wrote: > -Wflex-array-member-not-at-end was introduced in GCC-14, and we are > getting ready to enable it, globally. > > Move the conflicting declaration to the end of the structure. Notice > that `struct zones_ht_key` is a flexible structure --a structure that > contains a flexible-array member. I think the flex member is there purely to mark the end of the struct. You can use offsetofend(zone) instead of offsetof(pad), and delete pad.
On 08/08/24 20:46, Jakub Kicinski wrote: > On Mon, 5 Aug 2024 09:35:46 -0600 Gustavo A. R. Silva wrote: >> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are >> getting ready to enable it, globally. >> >> Move the conflicting declaration to the end of the structure. Notice >> that `struct zones_ht_key` is a flexible structure --a structure that >> contains a flexible-array member. > > I think the flex member is there purely to mark the end of the struct. > You can use offsetofend(zone) instead of offsetof(pad), and delete pad. Nice! I'll send v2, shortly. Thanks -- Gustavo
diff --git a/net/sched/act_ct.c b/net/sched/act_ct.c index 3ba8e7e739b5..b304ef46b5be 100644 --- a/net/sched/act_ct.c +++ b/net/sched/act_ct.c @@ -54,9 +54,11 @@ struct tcf_ct_flow_table { struct rcu_work rwork; struct nf_flowtable nf_ft; refcount_t ref; - struct zones_ht_key key; bool dying; + + /* Must be last - ends in a flex-array member. */ + struct zones_ht_key key; }; static const struct rhashtable_params zones_params = {
-Wflex-array-member-not-at-end was introduced in GCC-14, and we are getting ready to enable it, globally. Move the conflicting declaration to the end of the structure. Notice that `struct zones_ht_key` is a flexible structure --a structure that contains a flexible-array member. Fix the following warning: net/sched/act_ct.c:57:29: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> --- net/sched/act_ct.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)