[dpdk-dev] [PATCH v3] net/mlx5: fix wrong segmented packet in Rx
Slava Ovsiienko
viacheslavo at nvidia.com
Tue Mar 2 18:18:12 CET 2021
> -----Original Message-----
> From: Jiawei Zhu <17826875952 at 163.com>
> Sent: Monday, March 1, 2021 19:20
> To: dev at dpdk.org
> Cc: zhujiawei12 at huawei.com; Matan Azrad <matan at nvidia.com>; Shahaf
> Shuler <shahafs at nvidia.com>; Slava Ovsiienko <viacheslavo at nvidia.com>;
> Jiawei Zhu <17826875952 at 163.com>; stable at dpdk.org
> Subject: [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: stable at dpdk.org
>
> Signed-off-by: Jiawei Zhu <17826875952 at 163.com>
> ---
> v3:
> * Reword the commit message a little bit.
>
> v2:
> * Added extra explanation in commit message.
Acked-by: Viacheslav Ovsiienko <viacheslavo at nvidia.com>
Thank you for the nice catch and working on the patch update.
With best regards, Slava
More information about the dev
mailing list