net/octeontx2: fix corruption in segments list
authorSunil Kumar Kori <skori@marvell.com>
Mon, 21 Dec 2020 14:03:08 +0000 (19:33 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 13 Jan 2021 18:39:08 +0000 (19:39 +0100)
commit54b79ac220b16465bf67d2bd65e3098379a5ce25
treeb858449fd5d0c324ae1f8470b99f336dcf826421
parent565789662e7bc7608681cb93e3ccf7a4a2744f0b
net/octeontx2: fix corruption in segments list

On Tx, lastseg->next is not being reset to null for multi segmented
packet and same mbuf can be used on Rx which has a stale mbuf entry into
mbuf->next.

On Rx, application receives mbuf with mbuf->next uninitialized though
mbuf->nb_segs is correct. Application iterates over all segments using
mbuf->next ignoring mbuf->nb_segs which leads to undefined behavior.

So earlier assumption of just having right value in mbuf->nb_segs is
enough, is incorrect. Mbuf must contain valid and synced value in
nb_segs and next pointer.

Fixes: 364eb0e46683 ("net/octeontx2: avoid per packet barrier with multi segment")
Cc: stable@dpdk.org
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Acked-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
drivers/net/octeontx2/otx2_rx.c
drivers/net/octeontx2/otx2_rx.h