diff options
author | Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> | 2015-01-06 08:32:28 +0100 |
---|---|---|
committer | Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> | 2015-01-06 08:32:28 +0100 |
commit | 7f75e3aac454ba977822a675acff21aa88608baa (patch) | |
tree | dd8b9c5da9e7b198d7d9a4a008f52725ff5769f4 /kernel | |
parent | f1d7b4b97f82c5fb912e0857818cbec07d264b23 (diff) |
Missing rcu_read_lock() and _unlock() in mtype_list() fixed
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/net/netfilter/ipset/ip_set_hash_gen.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/net/netfilter/ipset/ip_set_hash_gen.h b/kernel/net/netfilter/ipset/ip_set_hash_gen.h index 5617dbb..9570dee 100644 --- a/kernel/net/netfilter/ipset/ip_set_hash_gen.h +++ b/kernel/net/netfilter/ipset/ip_set_hash_gen.h @@ -1100,6 +1100,8 @@ mtype_list(const struct ip_set *set, pr_debug("list hash set %s\n", set->name); t = (const struct htable *) cb->args[IPSET_CB_PRIVATE]; + /* Expire may replace a hbucket with another one */ + rcu_read_lock(); for (; cb->args[IPSET_CB_ARG0] < jhash_size(t->htable_bits); cb->args[IPSET_CB_ARG0]++) { incomplete = skb_tail_pointer(skb); @@ -1150,6 +1152,7 @@ nla_put_failure: ipset_nest_end(skb, atd); } out: + rcu_read_unlock(); return ret; } |