summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2020-08-19 22:52:38 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-08-27 10:31:49 +0300
commit3f4be7a7db9fa51929ea22f0cdcfa0abdbf1573f (patch)
tree8e3ca0f29fb4cb76f071e1dddad7b6f83eea12aa
parent1c0be9a99c9cf32a026d5a01e0e39e8c5d816ff3 (diff)
downloadlinux-3f4be7a7db9fa51929ea22f0cdcfa0abdbf1573f.tar.xz
netlink: fix state reallocation in policy export
[ Upstream commit d1fb55592909ea249af70170c7a52e637009564d ] 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-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;