net: cpsw_new: unregister devlink on port registration failure
cpsw_probe() registers devlink before registering the CPSW ports. If cpsw_register_ports() fails, the error path only unregisters the notifiers and then releases the lower level resources. It does not undo the successful cpsw_register_devlink() call, leaving the devlink instance and its parameters registered after probe has failed. Add a devlink cleanup label for the path where devlink registration has already succeeded, and use it when port registration fails. Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com> Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com> Link: https://patch.msgid.link/20260604043115.1409134-1-lgs201920130244@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
1 parent
bfa3d89cc1
commit
b64f763b60
1 file changed
+3
-1
@@ -2050,7 +2050,7 @@ skip_cpts:
|
||||
|
||||
ret = cpsw_register_ports(cpsw);
|
||||
if (ret)
|
||||
goto clean_unregister_notifiers;
|
||||
goto clean_unregister_devlink;
|
||||
|
||||
dev_notice(dev, "initialized (regs %pa, pool size %d) hw_ver:%08X %d.%d (%d)\n",
|
||||
&ss_res->start, descs_pool_size,
|
||||
@@ -2062,6 +2062,8 @@ skip_cpts:
|
||||
|
||||
return 0;
|
||||
|
||||
clean_unregister_devlink:
|
||||
cpsw_unregister_devlink(cpsw);
|
||||
clean_unregister_notifiers:
|
||||
cpsw_unregister_notifiers(cpsw);
|
||||
clean_cpts:
|
||||
|
||||
Reference in new issue
Block a user