Yury reported a crash in the sfc driver originated from
netpoll_send_udp(). The netconsole sends a message and then netpoll
invokes the driver's NAPI function with a budget of zero. It is
dedicated to allow driver to free TX resources, that it may have used
while sending the packet.
In the netpoll case the driver invokes xdp_do_flush() unconditionally,
leading to crash because bpf_net_context was never assigned.
Invoke xdp_do_flush() only if budget is not zero.
Fixes:
|
||
|---|---|---|
| .. | ||
| falcon | ||
| siena | ||
| bitfield.h | ||
| ef10.c | ||
| ef10_regs.h | ||
| ef10_sriov.c | ||
| ef10_sriov.h | ||
| ef100.c | ||
| ef100.h | ||
| ef100_ethtool.c | ||
| ef100_ethtool.h | ||
| ef100_netdev.c | ||
| ef100_netdev.h | ||
| ef100_nic.c | ||
| ef100_nic.h | ||
| ef100_regs.h | ||
| ef100_rep.c | ||
| ef100_rep.h | ||
| ef100_rx.c | ||
| ef100_rx.h | ||
| ef100_sriov.c | ||
| ef100_sriov.h | ||
| ef100_tx.c | ||
| ef100_tx.h | ||
| efx.c | ||
| efx.h | ||
| efx_channels.c | ||
| efx_channels.h | ||
| efx_common.c | ||
| efx_common.h | ||
| efx_devlink.c | ||
| efx_devlink.h | ||
| enum.h | ||
| ethtool.c | ||
| ethtool_common.c | ||
| ethtool_common.h | ||
| filter.h | ||
| io.h | ||
| Kconfig | ||
| mae.c | ||
| mae.h | ||
| mae_counter_format.h | ||
| Makefile | ||
| mcdi.c | ||
| mcdi.h | ||
| mcdi_filters.c | ||
| mcdi_filters.h | ||
| mcdi_functions.c | ||
| mcdi_functions.h | ||
| mcdi_mon.c | ||
| mcdi_pcol.h | ||
| mcdi_pcol_mae.h | ||
| mcdi_port.c | ||
| mcdi_port.h | ||
| mcdi_port_common.c | ||
| mcdi_port_common.h | ||
| mtd.c | ||
| net_driver.h | ||
| nic.c | ||
| nic.h | ||
| nic_common.h | ||
| ptp.c | ||
| ptp.h | ||
| rx.c | ||
| rx_common.c | ||
| rx_common.h | ||
| selftest.c | ||
| selftest.h | ||
| sriov.c | ||
| sriov.h | ||
| tc.c | ||
| tc.h | ||
| tc_bindings.c | ||
| tc_bindings.h | ||
| tc_conntrack.c | ||
| tc_conntrack.h | ||
| tc_counters.c | ||
| tc_counters.h | ||
| tc_encap_actions.c | ||
| tc_encap_actions.h | ||
| tx.c | ||
| tx.h | ||
| tx_common.c | ||
| tx_common.h | ||
| tx_tso.c | ||
| workarounds.h | ||