Thread (9 messages) 9 messages, 3 authors, 2008-06-02

Re: [PATCH][NETFILTER]: fix inconsistent lock state in nf_ct_frag6_gather()

From: Jarek Poplawski <hidden>
Date: 2008-06-02 12:41:06

On Mon, Jun 02, 2008 at 12:43:42PM +0200, Patrick McHardy wrote:
Jarek Poplawski wrote:
quoted
According to this and another similar lockdep report inet_fragment
locks are taken from nf_ct_frag6_gather() with softirqs enabled, but
these locks are mainly used in softirq context, so disabling BHs is
necessary.
Yes, this can happen on the local output path,
quoted
David & Patrick,

It looks like this patch could be applied.
Looks mostly fine, but don't we also have to disable BHs for
the inet_frag_find() call in nf_ct_frag6_gather()?
Probably I miss something, but I think this patch seems to do it:
I can see only one such call in nf_ct_frag6_gather() - with
fq_find()?

BTW, it looks like this lockdep warning points at some other possible
problem: inet_fragment.c uses an SMP "optimization" in
inet_frag_intern(), probably assuming softirq context; so without such
BH blocking around inet_frag_find(), there should be at least
preemption disabled, but I don't know if it's a problem for nf_ct.

Regards,
Jarek P.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help