mbox series

[0/2,next] firewire: Avoid -Wflex-array-member-not-at-end warnings

Message ID cover.1709658886.git.gustavoars@kernel.org (mailing list archive)
Headers show
Series firewire: Avoid -Wflex-array-member-not-at-end warnings | expand

Message

Gustavo A. R. Silva March 5, 2024, 5:24 p.m. UTC
-Wflex-array-member-not-at-end is coming in GCC-14, and we are getting
ready to enable it globally. So, we are deprecating flexible-array
members in the middle of another struct.

There are currently a couple of local structures (`u` and `template`)
that are using a flexible `struct fw_iso_packet` as header for a couple
of on-stack arrays.

We make use of the `struct_group_tagged()` helper to separate the
flexible array from the rest of the members in the flexible structure,
and, with this, we can now declare objects of the type of the tagged
struct, without embedding the flexible array in the middle of another
struct.

We also use `container_of()` whenever we need to retrieve a pointer to
the flexible structure, through which the flexible-array member can be
accessed.

With these changes, we fix a couple of -Wflex-array-member-not-at-end
warnings.

Gustavo A. R. Silva (2):
  firewire: Avoid -Wflex-array-member-not-at-end warning
  ALSA: firewire-lib: Avoid -Wflex-array-member-not-at-end warning

 drivers/firewire/core-cdev.c  |  9 +++++----
 include/linux/firewire.h      | 16 +++++++++-------
 sound/firewire/amdtp-stream.c |  8 +++++---
 3 files changed, 19 insertions(+), 14 deletions(-)

Comments

Takashi Sakamoto March 6, 2024, 1:10 a.m. UTC | #1
Hi,

On Tue, Mar 05, 2024 at 11:24:15AM -0600, Gustavo A. R. Silva wrote:
> -Wflex-array-member-not-at-end is coming in GCC-14, and we are getting
> ready to enable it globally. So, we are deprecating flexible-array
> members in the middle of another struct.
> 
> There are currently a couple of local structures (`u` and `template`)
> that are using a flexible `struct fw_iso_packet` as header for a couple
> of on-stack arrays.
> 
> We make use of the `struct_group_tagged()` helper to separate the
> flexible array from the rest of the members in the flexible structure,
> and, with this, we can now declare objects of the type of the tagged
> struct, without embedding the flexible array in the middle of another
> struct.
> 
> We also use `container_of()` whenever we need to retrieve a pointer to
> the flexible structure, through which the flexible-array member can be
> accessed.
> 
> With these changes, we fix a couple of -Wflex-array-member-not-at-end
> warnings.
> 
> Gustavo A. R. Silva (2):
>   firewire: Avoid -Wflex-array-member-not-at-end warning
>   ALSA: firewire-lib: Avoid -Wflex-array-member-not-at-end warning
> 
>  drivers/firewire/core-cdev.c  |  9 +++++----
>  include/linux/firewire.h      | 16 +++++++++-------
>  sound/firewire/amdtp-stream.c |  8 +++++---
>  3 files changed, 19 insertions(+), 14 deletions(-)

Thanks for the improvements, however we are mostly at the end of
development period for v6.8 kernel. Let me postpone applying the patches
until closing the next merge window (for v6.9), since we need the term to
evaluate the change. I mean that it goes to v6.10 kernel.

If you would like me to applying the patch v6.9 kernel, please inform it
to us.


Thanks

Takashi Sakamoto
Gustavo A. R. Silva March 6, 2024, 4:18 p.m. UTC | #2
> Thanks for the improvements, however we are mostly at the end of
> development period for v6.8 kernel. Let me postpone applying the patches
> until closing the next merge window (for v6.9), since we need the term to
> evaluate the change. I mean that it goes to v6.10 kernel.

Sure, no problem.

Actually, I'll send a v2 with DEFINE_FLEX(), instead.

Thanks
--
Gustavo
Kees Cook April 29, 2024, 6:30 p.m. UTC | #3
On Wed, Mar 06, 2024 at 10:18:59AM -0600, Gustavo A. R. Silva wrote:
> 
> > Thanks for the improvements, however we are mostly at the end of
> > development period for v6.8 kernel. Let me postpone applying the patches
> > until closing the next merge window (for v6.9), since we need the term to
> > evaluate the change. I mean that it goes to v6.10 kernel.
> 
> Sure, no problem.
> 
> Actually, I'll send a v2 with DEFINE_FLEX(), instead.

I was just going through the patch tracker to make sure stuff got
handled -- did a v2 of these ever get posted? I don't see anything in
the tracker nor changes here in -next.

Thanks!

-Kees
Gustavo A. R. Silva April 29, 2024, 6:42 p.m. UTC | #4
On 4/29/24 12:30, Kees Cook wrote:
> On Wed, Mar 06, 2024 at 10:18:59AM -0600, Gustavo A. R. Silva wrote:
>>
>>> Thanks for the improvements, however we are mostly at the end of
>>> development period for v6.8 kernel. Let me postpone applying the patches
>>> until closing the next merge window (for v6.9), since we need the term to
>>> evaluate the change. I mean that it goes to v6.10 kernel.
>>
>> Sure, no problem.
>>
>> Actually, I'll send a v2 with DEFINE_FLEX(), instead.
> 
> I was just going through the patch tracker to make sure stuff got
> handled -- did a v2 of these ever get posted? I don't see anything in
> the tracker nor changes here in -next.

Yes, it's in linux-next already:

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=1d717123bb1a7555a432e51a41709badf8545dba

--
Gustavo
Kees Cook April 29, 2024, 7:50 p.m. UTC | #5
On Mon, Apr 29, 2024 at 12:42:23PM -0600, Gustavo A. R. Silva wrote:
> 
> 
> On 4/29/24 12:30, Kees Cook wrote:
> > On Wed, Mar 06, 2024 at 10:18:59AM -0600, Gustavo A. R. Silva wrote:
> > > 
> > > > Thanks for the improvements, however we are mostly at the end of
> > > > development period for v6.8 kernel. Let me postpone applying the patches
> > > > until closing the next merge window (for v6.9), since we need the term to
> > > > evaluate the change. I mean that it goes to v6.10 kernel.
> > > 
> > > Sure, no problem.
> > > 
> > > Actually, I'll send a v2 with DEFINE_FLEX(), instead.
> > 
> > I was just going through the patch tracker to make sure stuff got
> > handled -- did a v2 of these ever get posted? I don't see anything in
> > the tracker nor changes here in -next.
> 
> Yes, it's in linux-next already:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=1d717123bb1a7555a432e51a41709badf8545dba

Ah-ha! Thank you! :)