[PATCH 1/3] media: dvb: as102-fe: Fix as10x_register_addr packing

Ricardo Ribalda posted 3 patches 1 year, 10 months ago
[PATCH 1/3] media: dvb: as102-fe: Fix as10x_register_addr packing
Posted by Ricardo Ribalda 1 year, 10 months ago
This structure is embedded in multiple other structures that are packed,
which conflicts with it being aligned.

drivers/media/usb/as102/as10x_cmd.h:379:30: warning: field reg_addr within 'struct as10x_dump_memory::(unnamed at drivers/media/usb/as102/as10x_cmd.h:373:2)' is less aligned than 'struct as10x_register_addr' and is usually due to 'struct as10x_dump_memory::(unnamed at drivers/media/usb/as102/as10x_cmd.h:373:2)' being packed, which can lead to unaligned accesses [-Wunaligned-access]

Mark it as being packed.

Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
 drivers/media/dvb-frontends/as102_fe_types.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/dvb-frontends/as102_fe_types.h b/drivers/media/dvb-frontends/as102_fe_types.h
index 297f9520ebf9d..8a4e392c88965 100644
--- a/drivers/media/dvb-frontends/as102_fe_types.h
+++ b/drivers/media/dvb-frontends/as102_fe_types.h
@@ -174,6 +174,6 @@ struct as10x_register_addr {
 	uint32_t addr;
 	/* register mode access */
 	uint8_t mode;
-};
+} __packed;
 
 #endif

-- 
2.44.0.478.gd926399ef9-goog
Re: [PATCH 1/3] media: dvb: as102-fe: Fix as10x_register_addr packing
Posted by Hans Verkuil 1 year, 10 months ago
On 10/04/2024 14:24, Ricardo Ribalda wrote:
> This structure is embedded in multiple other structures that are packed,
> which conflicts with it being aligned.
> 
> drivers/media/usb/as102/as10x_cmd.h:379:30: warning: field reg_addr within 'struct as10x_dump_memory::(unnamed at drivers/media/usb/as102/as10x_cmd.h:373:2)' is less aligned than 'struct as10x_register_addr' and is usually due to 'struct as10x_dump_memory::(unnamed at drivers/media/usb/as102/as10x_cmd.h:373:2)' being packed, which can lead to unaligned accesses [-Wunaligned-access]
> 
> Mark it as being packed.
> 
> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> ---
>  drivers/media/dvb-frontends/as102_fe_types.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/media/dvb-frontends/as102_fe_types.h b/drivers/media/dvb-frontends/as102_fe_types.h
> index 297f9520ebf9d..8a4e392c88965 100644
> --- a/drivers/media/dvb-frontends/as102_fe_types.h
> +++ b/drivers/media/dvb-frontends/as102_fe_types.h
> @@ -174,6 +174,6 @@ struct as10x_register_addr {
>  	uint32_t addr;
>  	/* register mode access */
>  	uint8_t mode;
> -};
> +} __packed;

Changing the layout of a struct is scary, but in this case I believe
as10x_register_addr isn't actually used in this driver at all.

So this looks OK.

Regards,

	Hans

>  
>  #endif
>