Commit ad9d9e85 authored by Pablo Neira Ayuso's avatar Pablo Neira Ayuso

netfilter: nf_tables: disable preemption in nft_update_chain_stats()

This patch fixes the following splat.

[118709.054937] BUG: using smp_processor_id() in preemptible [00000000] code: test/1571
[118709.054970] caller is nft_update_chain_stats.isra.4+0x53/0x97 [nf_tables]
[118709.054980] CPU: 2 PID: 1571 Comm: test Not tainted 4.17.0-rc6+ #335
[...]
[118709.054992] Call Trace:
[118709.055011]  dump_stack+0x5f/0x86
[118709.055026]  check_preemption_disabled+0xd4/0xe4
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 4b83a904
...@@ -126,15 +126,15 @@ static noinline void nft_update_chain_stats(const struct nft_chain *chain, ...@@ -126,15 +126,15 @@ static noinline void nft_update_chain_stats(const struct nft_chain *chain,
if (!base_chain->stats) if (!base_chain->stats)
return; return;
local_bh_disable();
stats = this_cpu_ptr(rcu_dereference(base_chain->stats)); stats = this_cpu_ptr(rcu_dereference(base_chain->stats));
if (stats) { if (stats) {
local_bh_disable();
u64_stats_update_begin(&stats->syncp); u64_stats_update_begin(&stats->syncp);
stats->pkts++; stats->pkts++;
stats->bytes += pkt->skb->len; stats->bytes += pkt->skb->len;
u64_stats_update_end(&stats->syncp); u64_stats_update_end(&stats->syncp);
local_bh_enable();
} }
local_bh_enable();
} }
struct nft_jumpstack { struct nft_jumpstack {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment