Re: [PATCH][NETFILTER]: fix inconsistent lock state in nf_ct_frag6_gather()
From: Patrick McHardy <hidden>
Date: 2008-06-02 13:24:08
Jarek Poplawski wrote:
On Mon, Jun 02, 2008 at 12:43:42PM +0200, Patrick McHardy wrote:quoted
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()?
Right, I missed that, sorry.
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.
Yes, good catch. With your patch things should be fine however. I've applied your patch and will also push it to -stable.