From: Mark Lord <kernel@teksavvy.com>
To: Ted Ts'o <tytso@mit.edu>,
Linux Kernel <linux-kernel@vger.kernel.org>,
linux-ext4@vger.kernel.org
Subject: Re: ext4 crash on 2.6.37: NULL ptr in ext4_discard_preallocations
Date: Sun, 20 Feb 2011 09:39:23 -0500 [thread overview]
Message-ID: <4D61279B.5030203@teksavvy.com> (raw)
In-Reply-To: <4D611D62.2030703@teksavvy.com>
On 11-02-20 08:55 AM, Mark Lord wrote:
> On 11-02-20 01:15 AM, Ted Ts'o wrote:
>> On Sun, Feb 20, 2011 at 12:05:27AM -0500, Mark Lord wrote:
>>> I suppose it must be, as there's no other 0x3c offset in that function.
>>> Which means it's probably this line that's crashing:
>>>
>>> BUG_ON(pa->pa_obj_lock != &ei->i_prealloc_lock);
>>>
>>> ...which could only happen if "pa" was NULL there.
>>> I wonder how that happened ?
>>
>> Which could only happen if ei->i_prealloc_list were not properly
>> initialized (i..e, it was still NULL). Which shouldn't ever
>> happen...., since all ext4_inodes are initialized in
>> ext4_alloc_inode().
>>
>> Hmm, can you replicate the crash?
>
> So far it has been a one time deal here,
> but stuff like this is pretty serious nonetheless.
>
> I suppose it could also happen if another thread did a list-delete
> at the same time as that function was running. Which would require
> that there be a locking bug/confusion somewhere.
>
> Looking over the code, most places use rcu to protect accesses,
> except for the fragment that crashed. That's probably just fine,
> but something to reexamine just out of paranoia.
>
> Also, the spinlock pointer appears to be dynamic, one of two
> possible spinlocks. Maybe something got confused there
> (well, obviously *something* got confused, so..).
That looks like the best candidate: perhaps pa->pa_obj_lock was
one of the per-cpu lg_prealloc_lock's at that point in time.
In which case an item could be deleted from the pa list
concurrently with the function that actually crashed?
That's as far as I can get with it in the time available.
You folks do know this code much better, so perhaps just expend
a few little grey cells on that theory before calling it quits?
Cheers!
prev parent reply other threads:[~2011-02-20 14:39 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-19 22:37 ext4 crash on 2.6.37: NULL ptr in ext4_discard_preallocations Mark Lord
2011-02-20 0:05 ` Ted Ts'o
2011-02-20 4:54 ` Mark Lord
2011-02-20 5:05 ` Mark Lord
2011-02-20 6:15 ` Ted Ts'o
2011-02-20 13:55 ` Mark Lord
2011-02-20 14:39 ` Mark Lord [this message]
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=4D61279B.5030203@teksavvy.com \
--to=kernel@teksavvy.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tytso@mit.edu \
/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.