diff options
author | Ola Olsson <ola1olsson@gmail.com> | 2015-12-13 13:12:03 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2015-12-15 07:08:02 -0500 |
commit | 09d118008f9815181d2114b84800e68019cd7b7d (patch) | |
tree | 80ff2dc7806ae3f6a95de9d8f7ac98827552ae4f /net | |
parent | b7bb110008607a915298bf0f47d25886ecb94477 (diff) |
nl80211: fix a few memory leaks in reg.c
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>
Diffstat (limited to 'net')
-rw-r--r-- | net/wireless/reg.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 2e8d6f39ed56..06d050da0d94 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c | |||
@@ -3029,6 +3029,7 @@ int set_regdom(const struct ieee80211_regdomain *rd, | |||
3029 | break; | 3029 | break; |
3030 | default: | 3030 | default: |
3031 | WARN(1, "invalid initiator %d\n", lr->initiator); | 3031 | WARN(1, "invalid initiator %d\n", lr->initiator); |
3032 | kfree(rd); | ||
3032 | return -EINVAL; | 3033 | return -EINVAL; |
3033 | } | 3034 | } |
3034 | 3035 | ||
@@ -3221,8 +3222,10 @@ int __init regulatory_init(void) | |||
3221 | /* We always try to get an update for the static regdomain */ | 3222 | /* We always try to get an update for the static regdomain */ |
3222 | err = regulatory_hint_core(cfg80211_world_regdom->alpha2); | 3223 | err = regulatory_hint_core(cfg80211_world_regdom->alpha2); |
3223 | if (err) { | 3224 | if (err) { |
3224 | if (err == -ENOMEM) | 3225 | if (err == -ENOMEM) { |
3226 | platform_device_unregister(reg_pdev); | ||
3225 | return err; | 3227 | return err; |
3228 | } | ||
3226 | /* | 3229 | /* |
3227 | * N.B. kobject_uevent_env() can fail mainly for when we're out | 3230 | * N.B. kobject_uevent_env() can fail mainly for when we're out |
3228 | * memory which is handled and propagated appropriately above | 3231 | * memory which is handled and propagated appropriately above |