Re: BUG_ON(nd->inode != parent->d_inode);

From: Linus Torvalds
Date: Fri Mar 08 2013 - 13:51:11 EST


On Fri, Mar 8, 2013 at 7:04 AM, Dave Jones <davej@xxxxxxxxxx> wrote:
>
> Managed to trigger this one from a different path..
>
> kernel BUG at fs/namei.c:1439!
> Call Trace:
> [<ffffffff811c973e>] path_lookupat+0x71e/0x740
> [<ffffffff811c9794>] filename_lookup+0x34/0xc0
> [<ffffffff811cc58e>] user_path_at_empty+0x8e/0x110
> [<ffffffff811cc621>] user_path_at+0x11/0x20
> [<ffffffff811e4347>] sys_lgetxattr+0x37/0xa0
> [<ffffffff816d11c2>] system_call_fastpath+0x16/0x1b
>
> What can I dump here that might give us more clues ?

I think we should do the same thing and print out dentry names to give
us clues about where in /proc the problem happens.

And it doesn't really have to be proc - because of the symlinks in
/proc, we could easily get to /sys through processes like udev etc..

So how about just replaving that BUG_ON() with a

if (WARN_ON(nd->inode != parent->d_inode)) {
printk("%s -> %s (%s)\n", parent->d_name.name,
path->dentry->d_name.name, nd->last.name);
return -EINVAL;
}

or something like that.

Hopefully that gives some clue about whare it happens, and some idea
about what migth be going on..

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/