All of lore.kernel.org
 help / color / mirror / Atom feed
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.1-rc10 oops in nameidata_to_filp
Date: Thu, 24 Nov 2011 17:38:29 +0000	[thread overview]
Message-ID: <20111124173829.GL2203@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20111124164406.22919.qmail@science.horizon.com>

On Thu, Nov 24, 2011 at 11:44:06AM -0500, George Spelvin wrote:

> It turned out the machine was quite recoverable and I've been running it without rebooting since then.
> This includes several suspends to RAM and one to disk.
> 
> So far, it seems pretty reproducible, but I suppose it could be a kernel bit flip.
> (F***ing Intel not even *allowing* ECC in "consumer" chipsets...)
> 
> I should probably add a debugging patch and reboot.  Is there a debugging helper
> for printing a dentry and vfsmount?

d_path(); takes struct path *, pointer to buffer and buffer length, puts
the pathname into the end of buffer and returns a pointer to the beginning
of resulting string.

I'd add (hell, maybe start with) printing this:
	file->f_path.dentry->d_inode
	inode
	file->f_mapping
	inode->i_mapping
	inode->i_mapping->host
just to see whether it's open() callback resetting ->f_mapping to NULL or
weird inode->i_mapping->host.  All in case file->f_mapping->host == NULL
just before the spot where it oopses.

Getting pathname would be something like
	static char name[4096];
	struct path path = {.mnt = mnt, .dentry = dentry};
	char *p = d_path(&path, name, 4096);
	if (IS_ERR(p))
		printk("[%d]", PTR_ERR(p));
	else
		printk("'%s'", p);
conditional on the same test.  

Said that, I'm not buying the theory of open assigning to ->f_mapping and
screwing it up; all such assignments end up with ->i_mapping of *some*
inode, as far as I can see from cursory grep over the tree.  Just in case:
do you have CONFIG_FS_POSIX_ACL set?

  reply	other threads:[~2011-11-24 17:38 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-16 11:22 3.1-rc10 oops in nameidata_to_filp George Spelvin
2011-11-24 14:51 ` Jan Kara
2011-11-24 16:44   ` George Spelvin
2011-11-24 17:38     ` Al Viro [this message]
2011-11-24 17:50       ` Al Viro
2011-11-24 17:51         ` Al Viro
2011-11-30 23:57         ` Andrew Morton
2011-11-24 21:14       ` Jan Kara
2011-11-24 21:47       ` George Spelvin
2011-11-24 22:13         ` Al Viro

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=20111124173829.GL2203@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.