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 <[email protected]> Reviewed-by: John Daley <[email protected]>
Applied to dpdk-next-net/main, thanks.

