Skip to content

Commit f524b72

Browse files
Yuan Candavem330
authored andcommitted
net: thunderbolt: Fix error handling in tbnet_init()
A problem about insmod thunderbolt-net failed is triggered with following log given while lsmod does not show thunderbolt_net: insmod: ERROR: could not insert module thunderbolt-net.ko: File exists The reason is that tbnet_init() returns tb_register_service_driver() directly without checking its return value, if tb_register_service_driver() failed, it returns without removing property directory, resulting the property directory can never be created later. tbnet_init() tb_register_property_dir() # register property directory tb_register_service_driver() driver_register() bus_add_driver() priv = kzalloc(...) # OOM happened # return without remove property directory Fix by remove property directory when tb_register_service_driver() returns error. Fixes: e69b6c0 ("net: Add support for networking over Thunderbolt cable") Signed-off-by: Yuan Can <[email protected]> Acked-by: Mika Westerberg <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent e4aa85c commit f524b72

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

drivers/net/thunderbolt.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,12 +1391,21 @@ static int __init tbnet_init(void)
13911391
tb_property_add_immediate(tbnet_dir, "prtcstns", flags);
13921392

13931393
ret = tb_register_property_dir("network", tbnet_dir);
1394-
if (ret) {
1395-
tb_property_free_dir(tbnet_dir);
1396-
return ret;
1397-
}
1394+
if (ret)
1395+
goto err_free_dir;
1396+
1397+
ret = tb_register_service_driver(&tbnet_driver);
1398+
if (ret)
1399+
goto err_unregister;
13981400

1399-
return tb_register_service_driver(&tbnet_driver);
1401+
return 0;
1402+
1403+
err_unregister:
1404+
tb_unregister_property_dir("network", tbnet_dir);
1405+
err_free_dir:
1406+
tb_property_free_dir(tbnet_dir);
1407+
1408+
return ret;
14001409
}
14011410
module_init(tbnet_init);
14021411

0 commit comments

Comments
 (0)