Hi,

> -----Original Message-----
> From: dev <dev-boun...@dpdk.org> On Behalf Of Jiawei Zhu
> Sent: Monday, March 1, 2021 7:20 PM
> To: dev@dpdk.org
> Cc: zhujiawe...@huawei.com; Matan Azrad <ma...@nvidia.com>; Shahaf
> Shuler <shah...@nvidia.com>; Slava Ovsiienko <viachesl...@nvidia.com>;
> Jiawei Zhu <17826875...@163.com>; sta...@dpdk.org
> Subject: [dpdk-dev] [PATCH v3] net/mlx5: fix wrong segmented packet in Rx
> 
> The issue occurred if mbuf starvation happened
> in the middle of segmented packet reception.
> In such a situation, after release the segments of
> packet being received, code did not advance the
> consumer index to the next stride. This caused
> the receiving of the wrong segmented packet data.
> 
> The possible error scenario:
> - we assume segs_n is 4 and we are receiving 4
>   segments of multi-segment packet.
> - we fail to allocate mbuf while receiving the 3rd segment,
>   and this frees the mbufs of the packet chain we have built.
>   There are the 1st and 2nd segments in the chain.
> - the 1st and the 2nd segments of this stride of Rx queue
>   are filled up (in elts array) with the new allocated
>   mbufs and their data are random (the 3rd and 4th
>   segments still contain the valid data of the packet though).
> - on the next iteration of stride processing we get
>   the wrong two segments of the multi-segment packet.
> 
> Hence, we should skip these mbufs in the stride and
> we should advance the consumer index on loop exit.
> 
> Fixes: 15a756b63734 ("net/mlx5: fix possible NULL dereference in Rx path")
> Cc: sta...@dpdk.org
> 
> Signed-off-by: Jiawei Zhu <17826875...@163.com>
> ---
> v3:
> * Reword the commit message a little bit.
> 
> v2:
> * Added extra explanation in commit message.
> ---
>  drivers/net/mlx5/mlx5_rxtx.c | 3 +++
>  1 file changed, 3 insertions(+)

Patch applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh

Reply via email to