On Mon, 24 Sep 2007 13:05:08 BST, Christoph Hellwig said: > On Mon, Sep 24, 2007 at 06:35:50AM -0400, [email protected] wrote: > > On Mon, 24 Sep 2007 02:17:16 PDT, Andrew Morton said: > > > > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.23-rc7/2.6.23-rc7-mm1/ > > > > It lived fast, it died young, it didn't leave a pretty corpse... (adding Dave Hansen to the cc: list, his patch added the mnt_want_write stuff) > do_times passes an unitialized vfsmount into mnt_want_write. Here's > the quick fix (untested), but the right fix is to restructure the complete > mess do_utimes is (never let a libc developer write your kernel code.. :)): Close - it still blew up, as one reference to nd.mnt remained. Fixed patch is appended - system boots all the way with this applied. --- linux-2.6.23-rc7-mm1/fs/utimes.c.dist 2007-09-24 05:57:38.000000000 -0400 +++ linux-2.6.23-rc7-mm1/fs/utimes.c 2007-09-24 08:48:34.000000000 -0400 @@ -59,6 +59,7 @@ long do_utimes(int dfd, char __user *fil struct inode *inode; struct iattr newattrs; struct file *f = NULL; + struct vfsmount *mnt; error = -EINVAL; if (times && (!nsec_valid(times[0].tv_nsec) || @@ -79,17 +80,19 @@ long do_utimes(int dfd, char __user *fil if (!f) goto out; dentry = f->f_path.dentry; + mnt = f->f_path.mnt; } else { error = __user_walk_fd(dfd, filename, (flags & AT_SYMLINK_NOFOLLOW) ? 0 : LOOKUP_FOLLOW, &nd); if (error) goto out; dentry = nd.dentry; + mnt = nd.mnt; } inode = dentry->d_inode; - error = mnt_want_write(nd.mnt); + error = mnt_want_write(mnt); if (error) goto dput_and_out; @@ -135,7 +138,7 @@ long do_utimes(int dfd, char __user *fil error = notify_change(dentry, &newattrs); mutex_unlock(&inode->i_mutex); mnt_drop_write_and_out: - mnt_drop_write(nd.mnt); + mnt_drop_write(mnt); dput_and_out: if (f) fput(f);
Attachment:
pgpRggscT68XB.pgp
Description: PGP signature
- Follow-Ups:
- Re: 2.6.23-rc7-mm1 - 'touch' command causes Oops.
- From: Dave Hansen <[email protected]>
- Re: 2.6.23-rc7-mm1 - 'touch' command causes Oops.
- References:
- 2.6.23-rc7-mm1
- From: Andrew Morton <[email protected]>
- 2.6.23-rc7-mm1 - 'touch' command causes Oops.
- From: [email protected]
- Re: 2.6.23-rc7-mm1 - 'touch' command causes Oops.
- From: Christoph Hellwig <[email protected]>
- 2.6.23-rc7-mm1
- Prev by Date: Re: [patch 1/2] VFS: new fgetattr() file operation
- Next by Date: Re: 2.6.23-rc7-mm1
- Previous by thread: Re: 2.6.23-rc7-mm1 - 'touch' command causes Oops.
- Next by thread: Re: 2.6.23-rc7-mm1 - 'touch' command causes Oops.
- Index(es):