From: Yury Polyanskiy <ypolyans@princeton.edu>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Wei Yongjun <yjwei@cn.fujitsu.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"David S. Miller" <davem@davemloft.net>,
peterz@infradead.org, polyanskiy@gmail.com
Subject: Re: [BUG]? xfrm: INFO: inconsistent lock state
Date: Tue, 2 Feb 2010 08:51:17 -0500 [thread overview]
Message-ID: <20100202085117.7a5c3530@penta.localdomain> (raw)
In-Reply-To: <20100202074914.GD11081@gondor.apana.org.au>
[-- Attachment #1: Type: text/plain, Size: 1537 bytes --]
On Tue, 2 Feb 2010 18:49:14 +1100
Herbert Xu <herbert@gondor.apana.org.au> wrote:
> On Mon, Feb 01, 2010 at 06:01:20PM +0800, Wei Yongjun wrote:
> > I got following lock INFO in my Fedora12 box uner 2.6.33-rc6.
> > Is this a BUG?
>
> Apparently.
>
> This is introduced by
>
> commit 9e0d57fd6dad37d72a3ca6db00ca8c76f2215454
> Author: Yury Polyanskiy <polyanskiy@gmail.com>
> Date: Sun Nov 8 20:58:41 2009 -0800
>
> xfrm: SAD entries do not expire correctly after suspend-resume
>
> Whether this is a real dead-lock depends on whether hrtimers
> behave as real hard IRQs. If they do then yes it can deadlock.
If hrtimer_tasklet interface functions properly, the
xfrm_timer_handler should be called in softirq context (and thus is
never in parallel with xfrm_input()). The deadlock isn't possible then.
In this case it seems that for some reason xfrm_timer_handler() is
called in the hardirq context. The relevant code in hrtimer_tasklet:
static enum hrtimer_restart __hrtimer_tasklet_trampoline(struct hrtimer *timer)
{
struct tasklet_hrtimer *ttimer =
container_of(timer, struct tasklet_hrtimer, timer);
if (hrtimer_is_hres_active(timer)) {
tasklet_hi_schedule(&ttimer->tasklet);
return HRTIMER_NORESTART;
}
return ttimer->function(timer);
}
I am copying Peter on this. Peter, how is it possible that
ttimer->function() is called in hardirq?
Could it be that switch from hres_active happened after the call to
trampoline and before the if() above?
Best,
Yury
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
next prev parent reply other threads:[~2010-02-02 14:00 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-01 10:01 [BUG]? xfrm: INFO: inconsistent lock state Wei Yongjun
2010-02-02 7:49 ` Herbert Xu
2010-02-02 13:51 ` Yury Polyanskiy [this message]
2010-02-02 14:20 ` [PATCH] hrtimer, softirq: Fix hrtimer->softirq trampoline Peter Zijlstra
2010-02-02 14:28 ` Yury Polyanskiy
2010-02-02 14:35 ` Peter Zijlstra
2010-02-03 1:47 ` Wei Yongjun
2010-02-03 16:56 ` David Miller
2010-02-03 17:21 ` [tip:timers/urgent] " tip-bot for Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100202085117.7a5c3530@penta.localdomain \
--to=ypolyans@princeton.edu \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=netdev@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=polyanskiy@gmail.com \
--cc=yjwei@cn.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.