summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg2012-12-04 12:49:16 +0100
committerJohannes Berg2013-01-03 13:01:19 +0100
commit82f20856304319d5a931846e0269eb911d52a905 (patch)
tree6a1e7e837f3d26ea40f1f73ac72ea979c9e85665
parentregulatory: don't write past array when intersecting rules (diff)
downloadkernel-qcow2-linux-82f20856304319d5a931846e0269eb911d52a905.tar.gz
kernel-qcow2-linux-82f20856304319d5a931846e0269eb911d52a905.tar.xz
kernel-qcow2-linux-82f20856304319d5a931846e0269eb911d52a905.zip
regulatory: don't allocate too much memory
There's no need to allocate one reg rule more than will be used, reduce the allocations. The allocation in nl80211 already doesn't allocate too much space. Acked-by: Luis R. Rodriguez <mcgrof@do-not-panic.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/wireless/reg.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 40646e823d5d..62bf212e5648 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -318,8 +318,9 @@ static int reg_copy_regd(const struct ieee80211_regdomain **dst_regd,
int size_of_regd = 0;
unsigned int i;
- size_of_regd = sizeof(struct ieee80211_regdomain) +
- ((src_regd->n_reg_rules + 1) * sizeof(struct ieee80211_reg_rule));
+ size_of_regd =
+ sizeof(struct ieee80211_regdomain) +
+ src_regd->n_reg_rules * sizeof(struct ieee80211_reg_rule);
regd = kzalloc(size_of_regd, GFP_KERNEL);
if (!regd)
@@ -641,7 +642,7 @@ static struct ieee80211_regdomain *regdom_intersect(
return NULL;
size_of_regd = sizeof(struct ieee80211_regdomain) +
- ((num_rules + 1) * sizeof(struct ieee80211_reg_rule));
+ num_rules * sizeof(struct ieee80211_reg_rule);
rd = kzalloc(size_of_regd, GFP_KERNEL);
if (!rd)