[PATCH net 0/3] ionic: fix port_info lifetime problems around device reset
From: Eric Joyner <hidden>
Date: 2026-08-15 00:00:51
The ionic port_info DMA buffer is read by most of the driver's ethtool ops, and is freed and reallocated by the firmware recovery and PCI reset paths. Those paths hold no lock that the ethtool ops honor - the driver takes no rtnl anywhere - so ethtool can dereference a pointer that has just been set to NULL, or read out of a buffer that has just been freed. Patch 1 adds the missing NULL checks to the six ethtool ops that lacked them; ionic_get_link_ext_stats() and ionic_get_link_ksettings() already had them. It fixes the oops reachable today and does not depend on the other two, so it stands on its own if the approach in patch 2 needs more discussion. Patch 2 detaches the netdev in ionic_reset_prepare(). The ethtool core only stays out of a driver when netif_device_present() is false, and the firmware recovery path already relies on that; the PCI reset path never did. This is what actually closes the window rather than papering over it. Patch 3 fixes an unrelated leak of the same buffer that turned up while auditing the free paths: probe failures after the port has been set up unwind through a label that never calls ionic_port_reset(). The port_info lifetime problems were pointed out by the netdev AI review bot on an unrelated ionic ethtool patch: https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260731214021.15279-1-eric.joyner@amd.com Signed-off-by: Eric Joyner <redacted> --- Eric Joyner (3): ionic: check for a NULL port_info in the remaining ethtool ops ionic: detach the netdev in the PCI reset handler ionic: free port_info when probe fails after the port is set up .../net/ethernet/pensando/ionic/ionic_bus_pci.c | 2 ++ .../net/ethernet/pensando/ionic/ionic_ethtool.c | 30 ++++++++++++++++++++++ 2 files changed, 32 insertions(+) --- base-commit: 24ef02f934eeb48830cff6b739abc3c62b1d107b change-id: 20260814-ionic-port-info-lifetime-3163779cb298 Best regards, -- Eric Joyner [off-list ref]