|
@@ -3572,11 +3572,14 @@ static int __init init_mac80211_hwsim(void)
|
|
|
hwsim_wq = alloc_workqueue("hwsim_wq", 0, 0);
|
|
|
if (!hwsim_wq)
|
|
|
return -ENOMEM;
|
|
|
- rhashtable_init(&hwsim_radios_rht, &hwsim_rht_params);
|
|
|
+
|
|
|
+ err = rhashtable_init(&hwsim_radios_rht, &hwsim_rht_params);
|
|
|
+ if (err)
|
|
|
+ goto out_free_wq;
|
|
|
|
|
|
err = register_pernet_device(&hwsim_net_ops);
|
|
|
if (err)
|
|
|
- return err;
|
|
|
+ goto out_free_rht;
|
|
|
|
|
|
err = platform_driver_register(&mac80211_hwsim_driver);
|
|
|
if (err)
|
|
@@ -3701,6 +3704,10 @@ out_unregister_driver:
|
|
|
platform_driver_unregister(&mac80211_hwsim_driver);
|
|
|
out_unregister_pernet:
|
|
|
unregister_pernet_device(&hwsim_net_ops);
|
|
|
+out_free_rht:
|
|
|
+ rhashtable_destroy(&hwsim_radios_rht);
|
|
|
+out_free_wq:
|
|
|
+ destroy_workqueue(hwsim_wq);
|
|
|
return err;
|
|
|
}
|
|
|
module_init(init_mac80211_hwsim);
|