netfilter: {ip,ip6,arp}_tables: avoid lockdep false positive
After commit 24b36f019
(netfilter: {ip,ip6,arp}_tables: dont block
bottom half more than necessary), lockdep can raise a warning
because we attempt to lock a spinlock with BH enabled, while
the same lock is usually locked by another cpu in a softirq context.
Disable again BH to avoid these lockdep warnings.
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Diagnosed-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5ca6f7c851
commit
001389b958
@ -735,6 +735,7 @@ static void get_counters(const struct xt_table_info *t,
|
||||
if (cpu == curcpu)
|
||||
continue;
|
||||
i = 0;
|
||||
local_bh_disable();
|
||||
xt_info_wrlock(cpu);
|
||||
xt_entry_foreach(iter, t->entries[cpu], t->size) {
|
||||
ADD_COUNTER(counters[i], iter->counters.bcnt,
|
||||
@ -742,6 +743,7 @@ static void get_counters(const struct xt_table_info *t,
|
||||
++i;
|
||||
}
|
||||
xt_info_wrunlock(cpu);
|
||||
local_bh_enable();
|
||||
}
|
||||
put_cpu();
|
||||
}
|
||||
|
@ -909,6 +909,7 @@ get_counters(const struct xt_table_info *t,
|
||||
if (cpu == curcpu)
|
||||
continue;
|
||||
i = 0;
|
||||
local_bh_disable();
|
||||
xt_info_wrlock(cpu);
|
||||
xt_entry_foreach(iter, t->entries[cpu], t->size) {
|
||||
ADD_COUNTER(counters[i], iter->counters.bcnt,
|
||||
@ -916,6 +917,7 @@ get_counters(const struct xt_table_info *t,
|
||||
++i; /* macro does multi eval of i */
|
||||
}
|
||||
xt_info_wrunlock(cpu);
|
||||
local_bh_enable();
|
||||
}
|
||||
put_cpu();
|
||||
}
|
||||
|
@ -922,6 +922,7 @@ get_counters(const struct xt_table_info *t,
|
||||
if (cpu == curcpu)
|
||||
continue;
|
||||
i = 0;
|
||||
local_bh_disable();
|
||||
xt_info_wrlock(cpu);
|
||||
xt_entry_foreach(iter, t->entries[cpu], t->size) {
|
||||
ADD_COUNTER(counters[i], iter->counters.bcnt,
|
||||
@ -929,6 +930,7 @@ get_counters(const struct xt_table_info *t,
|
||||
++i;
|
||||
}
|
||||
xt_info_wrunlock(cpu);
|
||||
local_bh_enable();
|
||||
}
|
||||
put_cpu();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user