• Yuan Can's avatar
    net: thunderbolt: Fix error handling in tbnet_init() · f524b728
    Yuan Can authored
    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: e69b6c02 ("net: Add support for networking over Thunderbolt cable")
    Signed-off-by: default avatarYuan Can <yuancan@huawei.com>
    Acked-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f524b728
thunderbolt.c 36.3 KB