User: Password:
Subscribe / Log in / New account

Re: VFS deadlock ?

From:  Al Viro <>
To:  Linus Torvalds <>
Subject:  Re: VFS deadlock ?
Date:  Thu, 21 Mar 2013 23:36:30 +0000
Message-ID:  <>
Cc:  Dave Jones <>, Linux Kernel <>, "Eric W. Biederman" <>
Archive-link:  Article

On Thu, Mar 21, 2013 at 03:53:13PM -0700, Linus Torvalds wrote:
> Ok, good. The only rpc/irda that has something in common is
> /proc/net/, and they both use proc_mkdir() to create the directory:
>     proc_irda = proc_mkdir("irda", init_net.proc_net);
>    ...
>     sn->proc_net_rpc = proc_mkdir("rpc", net->proc_net);
> so it's almost certainly that case. What I do *not* see is how we got
> two different dentries for the same name in /proc. But if that
> happens, then yes, they will have aliased inodes (because
> proc_get_inode() will look them up by "sb,de->low_ino".
> Al, any ideas? There shouldn't be some lookup race, because that's
> done under the parent inode lock. And multiple mount-points will have
> different superblocks, so proc_get_inode() will give them separate
> inodes. And bind mounts should have all the same dentry tree. So what
> the heck am I missing?

Some netns-related idiocy.  Oh, shit...

al@duke:~/linux/trees/vfs$ ls -lid /proc/{1,2}/net/stat
4026531842 dr-xr-xr-x 2 root root 0 Mar 21 19:33 /proc/1/net/stat
4026531842 dr-xr-xr-x 2 root root 0 Mar 21 19:33 /proc/2/net/stat

Eric, would you mind explaining WTF is going on here?  Again, WE CAN NOT
we are fucked.

Sigh...  Namespace kinds - there should've been only one...

(Log in to post comments)

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds