summaryrefslogtreecommitdiff
path: root/net/netlink/policy.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2020-08-19 22:52:38 +0300
committerDavid S. Miller <davem@davemloft.net>2020-08-20 01:39:36 +0300
commitd1fb55592909ea249af70170c7a52e637009564d (patch)
tree6e1dd506060d1a571d5d41ce5c539cd3f93c5a50 /net/netlink/policy.c
parentb4c8998be2a40989faab0001714dad0bc5e5fdbf (diff)
downloadlinux-d1fb55592909ea249af70170c7a52e637009564d.tar.xz
netlink: fix state reallocation in policy export
Evidently, when I did this previously, we didn't have more than 10 policies and didn't run into the reallocation path, because it's missing a memset() for the unused policies. Fix that. Fixes: d07dcf9aadd6 ("netlink: add infrastructure to expose policies to userspace") Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/netlink/policy.c')
-rw-r--r--net/netlink/policy.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/netlink/policy.c b/net/netlink/policy.c
index f6491853c797..2b3e26f7496f 100644
--- a/net/netlink/policy.c
+++ b/net/netlink/policy.c
@@ -51,6 +51,9 @@ static int add_policy(struct nl_policy_dump **statep,
if (!state)
return -ENOMEM;
+ memset(&state->policies[state->n_alloc], 0,
+ flex_array_size(state, policies, n_alloc - state->n_alloc));
+
state->policies[state->n_alloc].policy = policy;
state->policies[state->n_alloc].maxtype = maxtype;
state->n_alloc = n_alloc;