Message ID | 20200430213101.135134-5-arnd@arndb.de (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Kalle Valo |
Headers | show |
Series | gcc-10 warning fixes | expand |
On Thu, Apr 30, 2020 at 11:41 PM Gustavo A. R. Silva <gustavo@embeddedor.com> wrote: > On 4/30/20 16:30, Arnd Bergmann wrote: > > gcc-10 started warning about out-of-bounds access for zero-length > > arrays: > The treewide patch is an experimental change and, as this change only applies > to my -next tree, I will carry this patch in it, so other people don't have > to worry about this at all. Ok, thanks! Arnd
Hi Arnd, On 4/30/20 16:30, Arnd Bergmann wrote: > gcc-10 started warning about out-of-bounds access for zero-length > arrays: > > In file included from drivers/net/wireless/ath/ath10k/core.h:18, > from drivers/net/wireless/ath/ath10k/htt_rx.c:8: > drivers/net/wireless/ath/ath10k/htt_rx.c: In function 'ath10k_htt_rx_tx_fetch_ind': > drivers/net/wireless/ath/ath10k/htt.h:1683:17: warning: array subscript 65535 is outside the bounds of an interior zero-length array 'struct htt_tx_fetch_record[0]' [-Wzero-length-bounds] > 1683 | return (void *)&ind->records[le16_to_cpu(ind->num_records)]; > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > drivers/net/wireless/ath/ath10k/htt.h:1676:29: note: while referencing 'records' > 1676 | struct htt_tx_fetch_record records[0]; > | ^~~~~~~ > > The structure was already converted to have a flexible-array member in > the past, but there are two zero-length members in the end and only > one of them can be a flexible-array member. > > Swap the two around to avoid the warning, as 'resp_ids' is not accessed > in a way that causes a warning. > > Fixes: 3ba225b506a2 ("treewide: Replace zero-length array with flexible-array member") > Fixes: 22e6b3bc5d96 ("ath10k: add new htt definitions") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > drivers/net/wireless/ath/ath10k/htt.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath10k/htt.h b/drivers/net/wireless/ath/ath10k/htt.h > index e7096a73c6ca..7621f0a3dc77 100644 > --- a/drivers/net/wireless/ath/ath10k/htt.h > +++ b/drivers/net/wireless/ath/ath10k/htt.h > @@ -1673,8 +1673,8 @@ struct htt_tx_fetch_ind { > __le32 token; > __le16 num_resp_ids; > __le16 num_records; > - struct htt_tx_fetch_record records[0]; > - __le32 resp_ids[]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ > + __le32 resp_ids[0]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ > + struct htt_tx_fetch_record records[]; > } __packed; > > static inline void * > The treewide patch is an experimental change and, as this change only applies to my -next tree, I will carry this patch in it, so other people don't have to worry about this at all. Thank you -- Gustavo
"Gustavo A. R. Silva" <gustavo@embeddedor.com> writes: > Hi Arnd, > > On 4/30/20 16:30, Arnd Bergmann wrote: >> gcc-10 started warning about out-of-bounds access for zero-length >> arrays: >> >> In file included from drivers/net/wireless/ath/ath10k/core.h:18, >> from drivers/net/wireless/ath/ath10k/htt_rx.c:8: >> drivers/net/wireless/ath/ath10k/htt_rx.c: In function 'ath10k_htt_rx_tx_fetch_ind': >> drivers/net/wireless/ath/ath10k/htt.h:1683:17: warning: array subscript 65535 is outside the bounds of an interior zero-length array 'struct htt_tx_fetch_record[0]' [-Wzero-length-bounds] >> 1683 | return (void *)&ind->records[le16_to_cpu(ind->num_records)]; >> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/wireless/ath/ath10k/htt.h:1676:29: note: while referencing 'records' >> 1676 | struct htt_tx_fetch_record records[0]; >> | ^~~~~~~ >> >> The structure was already converted to have a flexible-array member in >> the past, but there are two zero-length members in the end and only >> one of them can be a flexible-array member. >> >> Swap the two around to avoid the warning, as 'resp_ids' is not accessed >> in a way that causes a warning. >> >> Fixes: 3ba225b506a2 ("treewide: Replace zero-length array with flexible-array member") >> Fixes: 22e6b3bc5d96 ("ath10k: add new htt definitions") >> Signed-off-by: Arnd Bergmann <arnd@arndb.de> >> --- >> drivers/net/wireless/ath/ath10k/htt.h | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/net/wireless/ath/ath10k/htt.h b/drivers/net/wireless/ath/ath10k/htt.h >> index e7096a73c6ca..7621f0a3dc77 100644 >> --- a/drivers/net/wireless/ath/ath10k/htt.h >> +++ b/drivers/net/wireless/ath/ath10k/htt.h >> @@ -1673,8 +1673,8 @@ struct htt_tx_fetch_ind { >> __le32 token; >> __le16 num_resp_ids; >> __le16 num_records; >> - struct htt_tx_fetch_record records[0]; >> - __le32 resp_ids[]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ >> + __le32 resp_ids[0]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ >> + struct htt_tx_fetch_record records[]; >> } __packed; >> >> static inline void * >> > > The treewide patch is an experimental change and, as this change only applies > to my -next tree, I will carry this patch in it, so other people don't have > to worry about this at all. Gustavo, why do you have ath10k patches in your tree? I prefer that ath10k patches go through my ath.git tree so that they are reviewed and tested.
On 5/4/20 06:54, Kalle Valo wrote: > "Gustavo A. R. Silva" <gustavo@embeddedor.com> writes: > >> Hi Arnd, >> >> On 4/30/20 16:30, Arnd Bergmann wrote: >>> gcc-10 started warning about out-of-bounds access for zero-length >>> arrays: >>> >>> In file included from drivers/net/wireless/ath/ath10k/core.h:18, >>> from drivers/net/wireless/ath/ath10k/htt_rx.c:8: >>> drivers/net/wireless/ath/ath10k/htt_rx.c: In function 'ath10k_htt_rx_tx_fetch_ind': >>> drivers/net/wireless/ath/ath10k/htt.h:1683:17: warning: array subscript 65535 is outside the bounds of an interior zero-length array 'struct htt_tx_fetch_record[0]' [-Wzero-length-bounds] >>> 1683 | return (void *)&ind->records[le16_to_cpu(ind->num_records)]; >>> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> drivers/net/wireless/ath/ath10k/htt.h:1676:29: note: while referencing 'records' >>> 1676 | struct htt_tx_fetch_record records[0]; >>> | ^~~~~~~ >>> >>> The structure was already converted to have a flexible-array member in >>> the past, but there are two zero-length members in the end and only >>> one of them can be a flexible-array member. >>> >>> Swap the two around to avoid the warning, as 'resp_ids' is not accessed >>> in a way that causes a warning. >>> >>> Fixes: 3ba225b506a2 ("treewide: Replace zero-length array with flexible-array member") >>> Fixes: 22e6b3bc5d96 ("ath10k: add new htt definitions") >>> Signed-off-by: Arnd Bergmann <arnd@arndb.de> >>> --- >>> drivers/net/wireless/ath/ath10k/htt.h | 4 ++-- >>> 1 file changed, 2 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/net/wireless/ath/ath10k/htt.h b/drivers/net/wireless/ath/ath10k/htt.h >>> index e7096a73c6ca..7621f0a3dc77 100644 >>> --- a/drivers/net/wireless/ath/ath10k/htt.h >>> +++ b/drivers/net/wireless/ath/ath10k/htt.h >>> @@ -1673,8 +1673,8 @@ struct htt_tx_fetch_ind { >>> __le32 token; >>> __le16 num_resp_ids; >>> __le16 num_records; >>> - struct htt_tx_fetch_record records[0]; >>> - __le32 resp_ids[]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ >>> + __le32 resp_ids[0]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ >>> + struct htt_tx_fetch_record records[]; >>> } __packed; >>> >>> static inline void * >>> >> >> The treewide patch is an experimental change and, as this change only applies >> to my -next tree, I will carry this patch in it, so other people don't have >> to worry about this at all. > > Gustavo, why do you have ath10k patches in your tree? I prefer that > ath10k patches go through my ath.git tree so that they are reviewed and > tested. > I just wanted to test out a mechanical change. I will remove it from my tree now and will send a patch to you so you can apply it to your ath.git tree. Thanks! -- Gustavo
"Gustavo A. R. Silva" <gustavo@embeddedor.com> writes: > On 5/4/20 06:54, Kalle Valo wrote: >> "Gustavo A. R. Silva" <gustavo@embeddedor.com> writes: >> >>> Hi Arnd, >>> >>> On 4/30/20 16:30, Arnd Bergmann wrote: >>>> gcc-10 started warning about out-of-bounds access for zero-length >>>> arrays: >>>> >>>> In file included from drivers/net/wireless/ath/ath10k/core.h:18, >>>> from drivers/net/wireless/ath/ath10k/htt_rx.c:8: >>>> drivers/net/wireless/ath/ath10k/htt_rx.c: In function 'ath10k_htt_rx_tx_fetch_ind': >>>> drivers/net/wireless/ath/ath10k/htt.h:1683:17: warning: array subscript 65535 is outside the bounds of an interior zero-length array 'struct htt_tx_fetch_record[0]' [-Wzero-length-bounds] >>>> 1683 | return (void *)&ind->records[le16_to_cpu(ind->num_records)]; >>>> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>> drivers/net/wireless/ath/ath10k/htt.h:1676:29: note: while referencing 'records' >>>> 1676 | struct htt_tx_fetch_record records[0]; >>>> | ^~~~~~~ >>>> >>>> The structure was already converted to have a flexible-array member in >>>> the past, but there are two zero-length members in the end and only >>>> one of them can be a flexible-array member. >>>> >>>> Swap the two around to avoid the warning, as 'resp_ids' is not accessed >>>> in a way that causes a warning. >>>> >>>> Fixes: 3ba225b506a2 ("treewide: Replace zero-length array with flexible-array member") >>>> Fixes: 22e6b3bc5d96 ("ath10k: add new htt definitions") >>>> Signed-off-by: Arnd Bergmann <arnd@arndb.de> >>>> --- >>>> drivers/net/wireless/ath/ath10k/htt.h | 4 ++-- >>>> 1 file changed, 2 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/drivers/net/wireless/ath/ath10k/htt.h b/drivers/net/wireless/ath/ath10k/htt.h >>>> index e7096a73c6ca..7621f0a3dc77 100644 >>>> --- a/drivers/net/wireless/ath/ath10k/htt.h >>>> +++ b/drivers/net/wireless/ath/ath10k/htt.h >>>> @@ -1673,8 +1673,8 @@ struct htt_tx_fetch_ind { >>>> __le32 token; >>>> __le16 num_resp_ids; >>>> __le16 num_records; >>>> - struct htt_tx_fetch_record records[0]; >>>> - __le32 resp_ids[]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ >>>> + __le32 resp_ids[0]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ >>>> + struct htt_tx_fetch_record records[]; >>>> } __packed; >>>> >>>> static inline void * >>>> >>> >>> The treewide patch is an experimental change and, as this change only applies >>> to my -next tree, I will carry this patch in it, so other people don't have >>> to worry about this at all. >> >> Gustavo, why do you have ath10k patches in your tree? I prefer that >> ath10k patches go through my ath.git tree so that they are reviewed and >> tested. >> > > I just wanted to test out a mechanical change. I will remove it from my tree > now and will send a patch to you so you can apply it to your ath.git tree. Great, thanks.
diff --git a/drivers/net/wireless/ath/ath10k/htt.h b/drivers/net/wireless/ath/ath10k/htt.h index e7096a73c6ca..7621f0a3dc77 100644 --- a/drivers/net/wireless/ath/ath10k/htt.h +++ b/drivers/net/wireless/ath/ath10k/htt.h @@ -1673,8 +1673,8 @@ struct htt_tx_fetch_ind { __le32 token; __le16 num_resp_ids; __le16 num_records; - struct htt_tx_fetch_record records[0]; - __le32 resp_ids[]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ + __le32 resp_ids[0]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ + struct htt_tx_fetch_record records[]; } __packed; static inline void *
gcc-10 started warning about out-of-bounds access for zero-length arrays: In file included from drivers/net/wireless/ath/ath10k/core.h:18, from drivers/net/wireless/ath/ath10k/htt_rx.c:8: drivers/net/wireless/ath/ath10k/htt_rx.c: In function 'ath10k_htt_rx_tx_fetch_ind': drivers/net/wireless/ath/ath10k/htt.h:1683:17: warning: array subscript 65535 is outside the bounds of an interior zero-length array 'struct htt_tx_fetch_record[0]' [-Wzero-length-bounds] 1683 | return (void *)&ind->records[le16_to_cpu(ind->num_records)]; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wireless/ath/ath10k/htt.h:1676:29: note: while referencing 'records' 1676 | struct htt_tx_fetch_record records[0]; | ^~~~~~~ The structure was already converted to have a flexible-array member in the past, but there are two zero-length members in the end and only one of them can be a flexible-array member. Swap the two around to avoid the warning, as 'resp_ids' is not accessed in a way that causes a warning. Fixes: 3ba225b506a2 ("treewide: Replace zero-length array with flexible-array member") Fixes: 22e6b3bc5d96 ("ath10k: add new htt definitions") Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/net/wireless/ath/ath10k/htt.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)