Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 001389b9 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

netfilter: {ip,ip6,arp}_tables: avoid lockdep false positive



After commit 24b36f01 (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: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Diagnosed-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5ca6f7c8
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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();
}
+2 −0
Original line number Diff line number Diff line
@@ -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();
}
+2 −0
Original line number Diff line number Diff line
@@ -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();
}