[dpdk-dev] [PATCH] net/enic: fix segfault caused by changing MTU
Ferruh Yigit
ferruh.yigit at intel.com
Wed Nov 3 19:41:56 CET 2021
On 10/26/2021 1:02 AM, Hyong Youb Kim wrote:
> Changing MTU after the device start causes a segfault in the Rx
> handler. The MTU handler (enic_set_mtu) performs the following steps.
> 1. Stop NIC Rx
> 2. Change Rx handler '(struct rte_eth_dev)->rx_pkt_burst' to
> the dummy handler and sleep a while to quiesce
> 3. Re-allocate/initialize Rx structures
> 4. Change Rx handler back to the real handler
> (e.g. enic_noscatter_recv_pkts)
>
> enic_set_mtu does not update the recently introduced fast-path pointer
> '(struct rte_eth_fp_ops)->rx_pkt_burst'. Since rte_eth_rx_burst only
> uses the fast-path pointer, it keeps invoking the real Rx handler, not
> the dummy one set by (2). And, (3) causes a segfault in the real Rx
> handler (e.g. dereferencing freed structures).
>
> Fix the segfault by updating the fast-path pointer as well.
>
> Fixes: c87d435a4d79 ("ethdev: copy fast-path API into separate structure")
>
> Signed-off-by: Hyong Youb Kim <hyonkim at cisco.com>
> Reviewed-by: John Daley <johndale at cisco.com>
Applied to dpdk-next-net/main, thanks.
More information about the dev
mailing list