lkml.org 
[lkml]   [2013]   [Sep]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: kernel BUG at fs/dcache.c:648! with v3.11-7890-ge5c832d
On Tue, Sep 10, 2013 at 12:01:22PM -0700, Linus Torvalds wrote:
> On Tue, Sep 10, 2013 at 11:43 AM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> >
> > !LOOKUP_ROOT: we set nd->root the first time we need / (in the very
> > beginning if it's an absolute pathname, on the first absolute symlink
> > otherwise). In non-RCU mode we hold a reference to it; in RCU mode
> > we do not. As the result, leaving RCU mode should either grab
> > a reference to the damn thing (if we intend to go on) or zero it out.
>
> Yeah, that was what I was thinking. But in particular, I was wondering
> if we could simplify unlazy_walk() to _not_ take that root reference
> at all, and just always zero it out even if we succeed.
>
> IOW, doing the attached patch (_instead_ of the one I sent out).
>
> Or is there something in path lookup retrying that might get uphappy
> if we go back to a NULL root.mnt, and doesn't check it?

Ugh... I really don't like that - your patch introduces the situations
when race with chroot can lead to two absolute symlinks in the same path
being interpreted wrt different roots. And yes, sure, anybody who gets
in that kind of races isn't going to get particulary sane results, but
still, I'd rather have simpler semantics here...

Anyway, I think I see how to tidy the things up in a different way; let's
go with your original fix for now and deal with the cleanups a bit later.

Another thing: could you merge vfs.git#for-linus? It's getting really
messy to keep track of changes both in mainline and in vfs.git, especially
since there's a pile of pending stuff (lru_list work) that needs to be
resolved wrt both...


\
 
 \ /
  Last update: 2013-09-10 21:21    [W:0.218 / U:0.284 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site