Re: [2.6.14-rt1] slowdown / oops.

From: Ingo Molnar
Date: Wed Nov 02 2005 - 10:33:30 EST



* Ingo Molnar <mingo@xxxxxxx> wrote:

> more updates: NETFILTER_DEBUG catches the situation too - the problem
> seems to be wrong reference counts on the skb. [...]

ok, could you check whether the patch below fixes the problem for you?
(I have also put it into -rt4)

local_bh_disable()/enable() is a NOP under PREEMPT_RT, and the
ip_ct_deliver_cached_events PER_CPU code relies on not being preempted
by the net_rx_action softirq handler. So this is a bug in PREEMPT_RT and
the upstream code should be fine.

Ingo

Index: linux/net/ipv4/netfilter/ip_conntrack_core.c
===================================================================
--- linux.orig/net/ipv4/netfilter/ip_conntrack_core.c
+++ linux/net/ipv4/netfilter/ip_conntrack_core.c
@@ -105,11 +105,11 @@ void ip_ct_deliver_cached_events(const s
{
struct ip_conntrack_ecache *ecache;

- local_bh_disable();
+ read_lock_bh(&ip_conntrack_lock);
ecache = &__get_cpu_var(ip_conntrack_ecache);
if (ecache->ct == ct)
__ip_ct_deliver_cached_events(ecache);
- local_bh_enable();
+ read_unlock_bh(&ip_conntrack_lock);
}

void __ip_ct_event_cache_init(struct ip_conntrack *ct)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/