From: Al Viro <viro@ZenIV.linux.org.uk>
To: George Spelvin <linux@horizon.com>
Cc: jack@suse.cz, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: 3.11.4: kernel BUG at fs/buffer.c:1268
Date: Thu, 17 Oct 2013 23:14:50 +0100 [thread overview]
Message-ID: <20131017221450.GU13318@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20131017211143.1712.qmail@science.horizon.com>
On Thu, Oct 17, 2013 at 05:11:43PM -0400, George Spelvin wrote:
> Al Viro wrote:
> > Note that do_group_exit() is preceded by
> > spin_unlock_irq(&sighand->siglock);
> > so no matter what happened in callers, irq is enabled. I'd suggest sticking
> > such BUG_ON() into __fput() and trying to reproduce that crap...
>
> Well, it happened again (error appended). Can you please clarify what you mean
> by "such BUG_ON()"; I'm having a hard time following the RCU code and determining
> all the situations under which __fput() might be called.
__fput() can be called via task_work_run() or via schedule_work(). That's
all. And it certainly should never be called with interrupts disabled.
So stick BUG_ON(irqs_disabled()) in it (WARN_ON() might be better, but
not by much).
There are two ways these traces could've happened:
* exit_task_work() called by do_exit() with irqs disabled.
Definitely buggy (and would do really nasty things to several functions
called by do_exit() before that one). If such BUG_ON() triggers in
__fput(), this is what happens and the next step will be sticking
several BUG_ON(irqs_disabled()) in do_exit() - something like
BUG_ON(irqs_disabled());
exit_sem(tsk);
BUG_ON(irqs_disabled());
exit_shm(tsk);
BUG_ON(irqs_disabled());
exit_files(tsk);
BUG_ON(irqs_disabled());
exit_fs(tsk);
BUG_ON(irqs_disabled());
exit_task_namespaces(tsk);
BUG_ON(irqs_disabled());
exit_task_work(tsk);
and checking which of those triggers; that'll tell us who has disabled it
and forgot to enable.
* __fput() is called with irqs enabled, but somewhere on the
way into ext4 (dput -> iput -> evict inode -> free blocks, now that
unlinked file got closed -> ...) we manage to disable irqs and forget
to enable them.
next prev parent reply other threads:[~2013-10-17 22:14 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-09 11:55 3.11.4: kernel BUG at fs/buffer.c:1268 George Spelvin
2013-10-09 15:18 ` Jan Kara
2013-10-09 17:23 ` Al Viro
2013-10-17 21:11 ` George Spelvin
2013-10-17 21:31 ` Jan Kara
2013-10-31 9:58 ` George Spelvin
2013-10-31 14:25 ` Jan Kara
2013-10-31 16:30 ` George Spelvin
2013-10-31 20:37 ` Jan Kara
2013-10-31 20:43 ` Jan Kara
2013-11-01 0:50 ` George Spelvin
2013-11-28 5:09 ` George Spelvin
2013-11-28 15:34 ` Jan Kara
2013-12-10 9:35 ` George Spelvin
2013-12-10 15:27 ` Jan Kara
2013-12-10 16:21 ` Jan Kara
2013-12-11 0:57 ` George Spelvin
2013-10-17 22:14 ` Al Viro [this message]
2013-10-31 18:33 ` Andreas Dilger
2013-10-31 18:33 ` Andreas Dilger
2013-10-31 19:43 ` George Spelvin
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=20131017221450.GU13318@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@horizon.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.