[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