diff mbox series

[v3,03/18] media: dvb-frontend/mxl5xx: Refactor struct MBIN_FILE_T

Message ID 20240527-cocci-flexarray-v3-3-cda09c535816@chromium.org (mailing list archive)
State New
Headers show
Series media: Fix the last set of coccinelle warnings | expand

Commit Message

Ricardo Ribalda May 27, 2024, 9:08 p.m. UTC
Replace a single element array, with a single element field.

The following cocci warning is fixed:
drivers/media/dvb-frontends/mxl5xx_defs.h:171:4-8: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)

Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
 drivers/media/dvb-frontends/mxl5xx.c      | 2 +-
 drivers/media/dvb-frontends/mxl5xx_defs.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Hans Verkuil May 30, 2024, 12:33 p.m. UTC | #1
On 27/05/2024 23:08, Ricardo Ribalda wrote:
> Replace a single element array, with a single element field.
> 
> The following cocci warning is fixed:
> drivers/media/dvb-frontends/mxl5xx_defs.h:171:4-8: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
> 
> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> ---
>  drivers/media/dvb-frontends/mxl5xx.c      | 2 +-
>  drivers/media/dvb-frontends/mxl5xx_defs.h | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/dvb-frontends/mxl5xx.c b/drivers/media/dvb-frontends/mxl5xx.c
> index 91e9c378397c..a15c0438b07a 100644
> --- a/drivers/media/dvb-frontends/mxl5xx.c
> +++ b/drivers/media/dvb-frontends/mxl5xx.c
> @@ -893,7 +893,7 @@ static int do_firmware_download(struct mxl *state, u8 *mbin_buffer_ptr,
>  	status = write_register(state, FW_DL_SIGN_ADDR, 0);
>  	if (status)
>  		return status;
> -	segment_ptr = (struct MBIN_SEGMENT_T *) (&mbin_ptr->data[0]);
> +	segment_ptr = (struct MBIN_SEGMENT_T *)(&mbin_ptr->data);
>  	for (index = 0; index < mbin_ptr->header.num_segments; index++) {
>  		if (segment_ptr->header.id != MBIN_SEGMENT_HEADER_ID) {
>  			dev_err(state->i2cdev, "%s: Invalid segment header ID (%c)\n",
> diff --git a/drivers/media/dvb-frontends/mxl5xx_defs.h b/drivers/media/dvb-frontends/mxl5xx_defs.h
> index 097271f73740..3c5d75ed8fea 100644
> --- a/drivers/media/dvb-frontends/mxl5xx_defs.h
> +++ b/drivers/media/dvb-frontends/mxl5xx_defs.h
> @@ -168,7 +168,7 @@ struct MBIN_FILE_HEADER_T {
>  
>  struct MBIN_FILE_T {
>  	struct MBIN_FILE_HEADER_T header;
> -	u8 data[1];
> +	u8 data;

From what I can tell, shouldn't this be 'data[]'? It really appears to be a flexible array.

Regards,

	Hans

>  };
>  
>  struct MBIN_SEGMENT_HEADER_T {
>
Ricardo Ribalda May 30, 2024, 12:59 p.m. UTC | #2
Hi Hans

On Thu, 30 May 2024 at 14:33, Hans Verkuil <hverkuil-cisco@xs4all.nl> wrote:
>
> On 27/05/2024 23:08, Ricardo Ribalda wrote:
> > Replace a single element array, with a single element field.
> >
> > The following cocci warning is fixed:
> > drivers/media/dvb-frontends/mxl5xx_defs.h:171:4-8: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
> >
> > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > ---
> >  drivers/media/dvb-frontends/mxl5xx.c      | 2 +-
> >  drivers/media/dvb-frontends/mxl5xx_defs.h | 2 +-
> >  2 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/media/dvb-frontends/mxl5xx.c b/drivers/media/dvb-frontends/mxl5xx.c
> > index 91e9c378397c..a15c0438b07a 100644
> > --- a/drivers/media/dvb-frontends/mxl5xx.c
> > +++ b/drivers/media/dvb-frontends/mxl5xx.c
> > @@ -893,7 +893,7 @@ static int do_firmware_download(struct mxl *state, u8 *mbin_buffer_ptr,
> >       status = write_register(state, FW_DL_SIGN_ADDR, 0);
> >       if (status)
> >               return status;
> > -     segment_ptr = (struct MBIN_SEGMENT_T *) (&mbin_ptr->data[0]);
> > +     segment_ptr = (struct MBIN_SEGMENT_T *)(&mbin_ptr->data);
> >       for (index = 0; index < mbin_ptr->header.num_segments; index++) {
> >               if (segment_ptr->header.id != MBIN_SEGMENT_HEADER_ID) {
> >                       dev_err(state->i2cdev, "%s: Invalid segment header ID (%c)\n",
> > diff --git a/drivers/media/dvb-frontends/mxl5xx_defs.h b/drivers/media/dvb-frontends/mxl5xx_defs.h
> > index 097271f73740..3c5d75ed8fea 100644
> > --- a/drivers/media/dvb-frontends/mxl5xx_defs.h
> > +++ b/drivers/media/dvb-frontends/mxl5xx_defs.h
> > @@ -168,7 +168,7 @@ struct MBIN_FILE_HEADER_T {
> >
> >  struct MBIN_FILE_T {
> >       struct MBIN_FILE_HEADER_T header;
> > -     u8 data[1];
> > +     u8 data;
>
> From what I can tell, shouldn't this be 'data[]'? It really appears to be a flexible array.

The field is mainly used to ease the data parsing. There was only
data[0] used, so I decided to make it into a single element array to
avoid changing the size of the structure....

But you are correct, it looks more clear as a flex array and there is
no allocation or sizeof() so I think it is safe to change its size.

Will squash with the MBIN_SEGMENT_T patch also

Thanks!


>
> Regards,
>
>         Hans
>
> >  };
> >
> >  struct MBIN_SEGMENT_HEADER_T {
> >
>
diff mbox series

Patch

diff --git a/drivers/media/dvb-frontends/mxl5xx.c b/drivers/media/dvb-frontends/mxl5xx.c
index 91e9c378397c..a15c0438b07a 100644
--- a/drivers/media/dvb-frontends/mxl5xx.c
+++ b/drivers/media/dvb-frontends/mxl5xx.c
@@ -893,7 +893,7 @@  static int do_firmware_download(struct mxl *state, u8 *mbin_buffer_ptr,
 	status = write_register(state, FW_DL_SIGN_ADDR, 0);
 	if (status)
 		return status;
-	segment_ptr = (struct MBIN_SEGMENT_T *) (&mbin_ptr->data[0]);
+	segment_ptr = (struct MBIN_SEGMENT_T *)(&mbin_ptr->data);
 	for (index = 0; index < mbin_ptr->header.num_segments; index++) {
 		if (segment_ptr->header.id != MBIN_SEGMENT_HEADER_ID) {
 			dev_err(state->i2cdev, "%s: Invalid segment header ID (%c)\n",
diff --git a/drivers/media/dvb-frontends/mxl5xx_defs.h b/drivers/media/dvb-frontends/mxl5xx_defs.h
index 097271f73740..3c5d75ed8fea 100644
--- a/drivers/media/dvb-frontends/mxl5xx_defs.h
+++ b/drivers/media/dvb-frontends/mxl5xx_defs.h
@@ -168,7 +168,7 @@  struct MBIN_FILE_HEADER_T {
 
 struct MBIN_FILE_T {
 	struct MBIN_FILE_HEADER_T header;
-	u8 data[1];
+	u8 data;
 };
 
 struct MBIN_SEGMENT_HEADER_T {