[Intel-wired-lan] [PATCH iwl-net] idpf: use actual mbx receive payload length

Singh, Krishneil K krishneil.k.singh at intel.com
Tue Sep 24 23:14:45 UTC 2024


> -----Original Message-----
> From: Joshua Hay <joshua.a.hay at intel.com>
> Sent: Tuesday, September 3, 2024 11:50 AM
> To: intel-wired-lan at lists.osuosl.org
> Cc: Olech, Milena <milena.olech at intel.com>; Lobakin, Aleksander
> <aleksander.lobakin at intel.com>; netdev at vger.kernel.org; Hay, Joshua A
> <joshua.a.hay at intel.com>; stable at vger.kernel.org; Kitszel, Przemyslaw
> <przemyslaw.kitszel at intel.com>
> Subject: [Intel-wired-lan][PATCH iwl-net] idpf: use actual mbx receive payload
> length
> 
> When a mailbox message is received, the driver is checking for a non 0
> datalen in the controlq descriptor. If it is valid, the payload is
> attached to the ctlq message to give to the upper layer.  However, the
> payload response size given to the upper layer was taken from the buffer
> metadata which is _always_ the max buffer size. This meant the API was
> returning 4K as the payload size for all messages.  This went unnoticed
> since the virtchnl exchange response logic was checking for a response
> size less than 0 (error), not less than exact size, or not greater than
> or equal to the max mailbox buffer size (4K). All of these checks will
> pass in the success case since the size provided is always 4K. However,
> this breaks anyone that wants to validate the exact response size.
> 
> Fetch the actual payload length from the value provided in the
> descriptor data_len field (instead of the buffer metadata).
> 
> Unfortunately, this means we lose some extra error parsing for variable
> sized virtchnl responses such as create vport and get ptypes.  However,
> the original checks weren't really helping anyways since the size was
> _always_ 4K.
> 
> Fixes: 34c21fa894a1 ("idpf: implement virtchnl transaction manager")
> Cc: stable at vger.kernel.org # 6.9+
> Signed-off-by: Joshua Hay <joshua.a.hay at intel.com>
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel at intel.com>
> ---
>  drivers/net/ethernet/intel/idpf/idpf_virtchnl.c | 9 +--------
>  1 file changed, 1 insertion(+), 8 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
> b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
> index 70986e12da28..3c0f97650d72 100644
> --- a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
> +++ b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c

Tested-by: Krishneil Singh <krishneil.k.singh at intel.com>


More information about the Intel-wired-lan mailing list