Skip to content

Commit

Permalink
nl80211: fix a few memory leaks in reg.c
Browse files Browse the repository at this point in the history
The first leak occurs when entering the default case
in the switch for the initiator in set_regdom.
The second leaks a platform_device struct if the
platform registration in regulatory_init succeeds but
the sub sequent regulatory hint fails due to no memory.

Signed-off-by: Ola Olsson <ola.olsson@sonymobile.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Ola Olsson authored and Johannes Berg committed Dec 15, 2015
1 parent b7bb110 commit 09d1180
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion net/wireless/reg.c
Original file line number Diff line number Diff line change
Expand Up @@ -3029,6 +3029,7 @@ int set_regdom(const struct ieee80211_regdomain *rd,
break;
default:
WARN(1, "invalid initiator %d\n", lr->initiator);
kfree(rd);
return -EINVAL;
}

Expand Down Expand Up @@ -3221,8 +3222,10 @@ int __init regulatory_init(void)
/* We always try to get an update for the static regdomain */
err = regulatory_hint_core(cfg80211_world_regdom->alpha2);
if (err) {
if (err == -ENOMEM)
if (err == -ENOMEM) {
platform_device_unregister(reg_pdev);
return err;
}
/*
* N.B. kobject_uevent_env() can fail mainly for when we're out
* memory which is handled and propagated appropriately above
Expand Down

0 comments on commit 09d1180

Please sign in to comment.