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