This series contains two fixes to improve the software handling for certain error conditions when loading an older DDP package on a device. In particular, some combinations of DDP and firmware version can result in the driver accidentally locking the device up due to blocking the global configuration lock used for DDP programming.
Also, fix an error in the cleanup logic for a failed probe could result in memory corruption due to a use-after-free from double-calling ice_deinit_hw(). It is not clear if any publicly released DDP versions suffer from the exact issues that caused the ice_cfg_tx_topo() failure. However, it is entirely plausible that the error could be triggered in the future. Thus, it is important to ensure the error flow is safe and won't make the device inaccessible for such tasks as updating the firmware. Additionally, degrading functionality simply because a user has not updated a DDP package is wrong. I settled on -ENODEV as the error code for handling ice_init_hw() failures, to ensure probe stops in the rare cases where this fails. I am open to alternative suggestions for how to handle errors from ice_cfg_tx_topo() through into ice_init_tx_topology(). Signed-off-by: Jacob Keller <[email protected]> --- Jacob Keller (2): ice: fix double-call to ice_deinit_hw() during probe failure ice: don't leave device non-functional if Tx scheduler config fails drivers/net/ethernet/intel/ice/devlink/devlink.c | 10 +----- drivers/net/ethernet/intel/ice/ice_ddp.c | 44 +++++++++++++++++------- drivers/net/ethernet/intel/ice/ice_main.c | 38 ++++++++++---------- 3 files changed, 53 insertions(+), 39 deletions(-) --- base-commit: dae7f9cbd1909de2b0bccc30afef95c23f93e477 change-id: 20250716-jk-ddp-safe-mode-issue-d6130b8c8205 Best regards, -- Jacob Keller <[email protected]>
