netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH iwl-net] idpf: avoid compiler introduced padding in virtchnl2_rss_key struct
@ 2023-12-15 23:48 Pavan Kumar Linga
  2023-12-18 12:08 ` Simon Horman
  2023-12-22 18:32 ` [Intel-wired-lan] " Register, Scott
  0 siblings, 2 replies; 3+ messages in thread
From: Pavan Kumar Linga @ 2023-12-15 23:48 UTC (permalink / raw)
  To: intel-wired-lan
  Cc: netdev, larysa.zaremba, przemyslaw.kitszel, aleksander.lobakin,
	Pavan Kumar Linga

Size of the virtchnl2_rss_key struct should be 7 bytes but the
compiler introduces a padding byte for the structure alignment.
This results in idpf sending an additional byte of memory to the device
control plane than the expected buffer size. As the control plane
enforces virtchnl message size checks to validate the message,
set RSS key message fails resulting in the driver load failure.

Remove implicit compiler padding by using "__packed" structure
attribute for the virtchnl2_rss_key struct.

Also there is no need to use __DECLARE_FLEX_ARRAY macro for the
'key_flex' struct field. So drop it.

Fixes: 0d7502a9b4a7 ("virtchnl: add virtchnl version 2 ops")
Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>
Signed-off-by: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
---
 drivers/net/ethernet/intel/idpf/virtchnl2.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/idpf/virtchnl2.h b/drivers/net/ethernet/intel/idpf/virtchnl2.h
index 07e72c72d15..8dc83788972 100644
--- a/drivers/net/ethernet/intel/idpf/virtchnl2.h
+++ b/drivers/net/ethernet/intel/idpf/virtchnl2.h
@@ -1104,9 +1104,9 @@ struct virtchnl2_rss_key {
 	__le32 vport_id;
 	__le16 key_len;
 	u8 pad;
-	__DECLARE_FLEX_ARRAY(u8, key_flex);
-};
-VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_rss_key);
+	u8 key_flex[];
+} __packed;
+VIRTCHNL2_CHECK_STRUCT_LEN(7, virtchnl2_rss_key);
 
 /**
  * struct virtchnl2_queue_chunk - chunk of contiguous queues
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH iwl-net] idpf: avoid compiler introduced padding in virtchnl2_rss_key struct
  2023-12-15 23:48 [PATCH iwl-net] idpf: avoid compiler introduced padding in virtchnl2_rss_key struct Pavan Kumar Linga
@ 2023-12-18 12:08 ` Simon Horman
  2023-12-22 18:32 ` [Intel-wired-lan] " Register, Scott
  1 sibling, 0 replies; 3+ messages in thread
From: Simon Horman @ 2023-12-18 12:08 UTC (permalink / raw)
  To: Pavan Kumar Linga
  Cc: intel-wired-lan, netdev, larysa.zaremba, przemyslaw.kitszel,
	aleksander.lobakin

On Fri, Dec 15, 2023 at 03:48:07PM -0800, Pavan Kumar Linga wrote:
> Size of the virtchnl2_rss_key struct should be 7 bytes but the
> compiler introduces a padding byte for the structure alignment.
> This results in idpf sending an additional byte of memory to the device
> control plane than the expected buffer size. As the control plane
> enforces virtchnl message size checks to validate the message,
> set RSS key message fails resulting in the driver load failure.
> 
> Remove implicit compiler padding by using "__packed" structure
> attribute for the virtchnl2_rss_key struct.
> 
> Also there is no need to use __DECLARE_FLEX_ARRAY macro for the
> 'key_flex' struct field. So drop it.
> 
> Fixes: 0d7502a9b4a7 ("virtchnl: add virtchnl version 2 ops")
> Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>
> Signed-off-by: Pavan Kumar Linga <pavan.kumar.linga@intel.com>

Reviewed-by: Simon Horman <horms@kernel.org>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [Intel-wired-lan] [PATCH iwl-net] idpf: avoid compiler introduced padding in virtchnl2_rss_key struct
  2023-12-15 23:48 [PATCH iwl-net] idpf: avoid compiler introduced padding in virtchnl2_rss_key struct Pavan Kumar Linga
  2023-12-18 12:08 ` Simon Horman
@ 2023-12-22 18:32 ` Register, Scott
  1 sibling, 0 replies; 3+ messages in thread
From: Register, Scott @ 2023-12-22 18:32 UTC (permalink / raw)
  To: Linga, Pavan Kumar, intel-wired-lan@lists.osuosl.org
  Cc: netdev@vger.kernel.org, Lobakin, Aleksander, Linga, Pavan Kumar,
	Kitszel, Przemyslaw, Zaremba, Larysa

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Pavan Kumar Linga
> Sent: Friday, December 15, 2023 3:48 PM
> To: intel-wired-lan@lists.osuosl.org
> Cc: netdev@vger.kernel.org; Lobakin, Aleksander
> <aleksander.lobakin@intel.com>; Linga, Pavan Kumar
> <pavan.kumar.linga@intel.com>; Kitszel, Przemyslaw
> <przemyslaw.kitszel@intel.com>; Zaremba, Larysa
> <larysa.zaremba@intel.com>
> Subject: [Intel-wired-lan] [PATCH iwl-net] idpf: avoid compiler introduced
> padding in virtchnl2_rss_key struct
> 
> Size of the virtchnl2_rss_key struct should be 7 bytes but the
> compiler introduces a padding byte for the structure alignment.
> This results in idpf sending an additional byte of memory to the device
> control plane than the expected buffer size. As the control plane
> enforces virtchnl message size checks to validate the message,
> set RSS key message fails resulting in the driver load failure.
> 
> Remove implicit compiler padding by using "__packed" structure
> attribute for the virtchnl2_rss_key struct.
> 
> Also there is no need to use __DECLARE_FLEX_ARRAY macro for the
> 'key_flex' struct field. So drop it.
> 
> Fixes: 0d7502a9b4a7 ("virtchnl: add virtchnl version 2 ops")
> Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>
> Signed-off-by: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
> ---
>  drivers/net/ethernet/intel/idpf/virtchnl2.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)

Tested-by: Scott Register <scott.register@intel.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-12-22 18:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-15 23:48 [PATCH iwl-net] idpf: avoid compiler introduced padding in virtchnl2_rss_key struct Pavan Kumar Linga
2023-12-18 12:08 ` Simon Horman
2023-12-22 18:32 ` [Intel-wired-lan] " Register, Scott

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).