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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Joshua Hay <joshua.a.hay@xxxxxxxxx>
> Sent: Tuesday, September 3, 2024 11:50 AM
> To: intel-wired-lan@xxxxxxxxxxxxxxxx
> Cc: Olech, Milena <milena.olech@xxxxxxxxx>; Lobakin, Aleksander
> <aleksander.lobakin@xxxxxxxxx>; netdev@xxxxxxxxxxxxxxx; Hay, Joshua A
> <joshua.a.hay@xxxxxxxxx>; stable@xxxxxxxxxxxxxxx; Kitszel, Przemyslaw
> <przemyslaw.kitszel@xxxxxxxxx>
> 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@xxxxxxxxxxxxxxx # 6.9+
> Signed-off-by: Joshua Hay <joshua.a.hay@xxxxxxxxx>
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@xxxxxxxxx>
> ---
>  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@xxxxxxxxx>





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux