You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
net: thunderbolt: Fix error handling in tbnet_init()
[ Upstream commitf524b7289b] 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:e69b6c02b4("net: Add support for networking over Thunderbolt cable") Signed-off-by: Yuan Can <yuancan@huawei.com> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
e13ef43813
commit
0aeb0de528
@@ -1343,12 +1343,21 @@ static int __init tbnet_init(void)
|
||||
TBNET_MATCH_FRAGS_ID);
|
||||
|
||||
ret = tb_register_property_dir("network", tbnet_dir);
|
||||
if (ret) {
|
||||
tb_property_free_dir(tbnet_dir);
|
||||
return ret;
|
||||
}
|
||||
if (ret)
|
||||
goto err_free_dir;
|
||||
|
||||
return tb_register_service_driver(&tbnet_driver);
|
||||
ret = tb_register_service_driver(&tbnet_driver);
|
||||
if (ret)
|
||||
goto err_unregister;
|
||||
|
||||
return 0;
|
||||
|
||||
err_unregister:
|
||||
tb_unregister_property_dir("network", tbnet_dir);
|
||||
err_free_dir:
|
||||
tb_property_free_dir(tbnet_dir);
|
||||
|
||||
return ret;
|
||||
}
|
||||
module_init(tbnet_init);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user