netdev: Fix resource leaks in netdev_init

This commit is contained in:
Denis Kenzior 2019-10-11 15:34:54 -05:00
parent d42c4a57b8
commit cb57d44cb4
1 changed files with 13 additions and 4 deletions

View File

@ -4760,8 +4760,6 @@ static int netdev_init(void)
struct l_genl *genl = iwd_get_genl(); struct l_genl *genl = iwd_get_genl();
const struct l_settings *settings = iwd_get_config(); const struct l_settings *settings = iwd_get_config();
nl80211 = l_genl_family_new(genl, NL80211_GENL_NAME);
if (rtnl) if (rtnl)
return -EALREADY; return -EALREADY;
@ -4779,8 +4777,13 @@ static int netdev_init(void)
if (!l_netlink_register(rtnl, RTNLGRP_LINK, if (!l_netlink_register(rtnl, RTNLGRP_LINK,
netdev_link_notify, NULL, NULL)) { netdev_link_notify, NULL, NULL)) {
l_error("Failed to register for RTNL link notifications"); l_error("Failed to register for RTNL link notifications");
l_netlink_destroy(rtnl); goto fail_netlink;
return -EIO; }
nl80211 = l_genl_family_new(genl, NL80211_GENL_NAME);
if (!nl80211) {
l_error("Failed to obtain nl80211");
goto fail_netlink;
} }
if (!l_settings_get_int(settings, "General", "roam_rssi_threshold", if (!l_settings_get_int(settings, "General", "roam_rssi_threshold",
@ -4808,6 +4811,12 @@ static int netdev_init(void)
l_error("Registering for MLME notification failed"); l_error("Registering for MLME notification failed");
return 0; return 0;
fail_netlink:
l_netlink_destroy(rtnl);
rtnl = NULL;
return -EIO;
} }
static void netdev_exit(void) static void netdev_exit(void)