Skip to content

Commit

Permalink
mac80211_hwsim: fix module init error paths for netlink
Browse files Browse the repository at this point in the history
There is no unregister netlink notifier and family on error paths
in init_mac80211_hwsim(). Also there is an error path where
hwsim_class is not destroyed.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <[email protected]>
Fixes: 6275936 ("mac80211-hwsim: Provide multicast event for HWSIM_CMD_NEW_RADIO")
Signed-off-by: Johannes Berg <[email protected]>
  • Loading branch information
khoroshilov authored and jmberg-intel committed Nov 9, 2018
1 parent ea53abf commit 05cc09d
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions drivers/net/wireless/mac80211_hwsim.c
Original file line number Diff line number Diff line change
Expand Up @@ -3703,16 +3703,16 @@ static int __init init_mac80211_hwsim(void)
if (err)
goto out_unregister_pernet;

err = hwsim_init_netlink();
if (err)
goto out_unregister_driver;

hwsim_class = class_create(THIS_MODULE, "mac80211_hwsim");
if (IS_ERR(hwsim_class)) {
err = PTR_ERR(hwsim_class);
goto out_unregister_driver;
goto out_exit_netlink;
}

err = hwsim_init_netlink();
if (err < 0)
goto out_unregister_driver;

for (i = 0; i < radios; i++) {
struct hwsim_new_radio_params param = { 0 };

Expand Down Expand Up @@ -3818,6 +3818,8 @@ static int __init init_mac80211_hwsim(void)
free_netdev(hwsim_mon);
out_free_radios:
mac80211_hwsim_free();
out_exit_netlink:
hwsim_exit_netlink();
out_unregister_driver:
platform_driver_unregister(&mac80211_hwsim_driver);
out_unregister_pernet:
Expand Down

0 comments on commit 05cc09d

Please sign in to comment.