[kernel] r18991 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/series

Ben Hutchings benh at alioth.debian.org
Sat May 12 09:37:28 UTC 2012


Author: benh
Date: Sat May 12 09:37:26 2012
New Revision: 18991

Log:
NFSv4: Revalidate uid/gid after open (Closes: #659111)

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/base

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	Sat May 12 09:30:01 2012	(r18990)
+++ dists/sid/linux-2.6/debian/changelog	Sat May 12 09:37:26 2012	(r18991)
@@ -7,6 +7,7 @@
   * aufs: Enable AUFS_EXPORT
   * ext4: Report max_batch_time option correctly (Closes: #654206)
   * [i386/rt-686-pae] Enable HIGHMEM64G as intended for this configuration
+  * NFSv4: Revalidate uid/gid after open (Closes: #659111)
 
   [ Bastian Blank ]
   * [s390] Enable IUCV special message support. (closes: #671238)

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch	Sat May 12 09:37:26 2012	(r18991)
@@ -0,0 +1,74 @@
+From stable-owner at vger.kernel.org Fri May 11 10:20:33 2012
+Date: Fri, 11 May 2012 04:20:20 -0500
+From: Jonathan Nieder <jrnieder at gmail.com>
+Subject: [PATCH] NFSv4: Revalidate uid/gid after open
+
+This is a shorter (and more appropriate for stable kernels) analog to
+the following upstream commit:
+
+commit 6926afd1925a54a13684ebe05987868890665e2b
+Author: Trond Myklebust <Trond.Myklebust at netapp.com>
+Date:   Sat Jan 7 13:22:46 2012 -0500
+
+    NFSv4: Save the owner/group name string when doing open
+
+    ...so that we can do the uid/gid mapping outside the asynchronous RPC
+    context.
+    This fixes a bug in the current NFSv4 atomic open code where the client
+    isn't able to determine what the true uid/gid fields of the file are,
+    (because the asynchronous nature of the OPEN call denies it the ability
+    to do an upcall) and so fills them with default values, marking the
+    inode as needing revalidation.
+    Unfortunately, in some cases, the VFS will do some additional sanity
+    checks on the file, and may override the server's decision to allow
+    the open because it sees the wrong owner/group fields.
+
+    Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
+
+Without this patch, logging into two different machines with home
+directories mounted over NFS4 and then running "vim" and typing ":q"
+in each reliably produces the following error on the second machine:
+
+	E137: Viminfo file is not writable: /users/system/rtheys/.viminfo
+
+This regression was introduced by 80e52aced138 ("NFSv4: Don't do
+idmapper upcalls for asynchronous RPC calls", merged during the 2.6.32
+cycle) --- after the OPEN call, .viminfo has the default values for
+st_uid and st_gid (0xfffffffe) cached because we do not want to let
+rpciod wait for an idmapper upcall to fill them in.
+
+The fix used in mainline is to save the owner and group as strings and
+perform the upcall in _nfs4_proc_open outside the rpciod context,
+which takes about 600 lines.  For stable, we can do something similar
+with a one-liner: make open check for the stale fields and make a
+(synchronous) GETATTR call to fill them when needed.
+
+Trond dictated the patch, I typed it in, and Rik tested it.
+
+Addresses http://bugs.debian.org/659111 and
+          https://bugzilla.redhat.com/789298
+
+Reported-by: Rik Theys <Rik.Theys at esat.kuleuven.be>
+Explained-by: David Flyn <davidf at rd.bbc.co.uk>
+Signed-off-by: Jonathan Nieder <jrnieder at gmail.com>
+Tested-by: Rik Theys <Rik.Theys at esat.kuleuven.be>
+Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+---
+ fs/nfs/nfs4proc.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
+index 3d6730213f9d..30f6548f2b99 100644
+--- a/fs/nfs/nfs4proc.c
++++ b/fs/nfs/nfs4proc.c
+@@ -1771,6 +1771,7 @@ static int _nfs4_do_open(struct inode *dir, struct path *path, fmode_t fmode, in
+ 			nfs_setattr_update_inode(state->inode, sattr);
+ 		nfs_post_op_update_inode(state->inode, opendata->o_res.f_attr);
+ 	}
++	nfs_revalidate_inode(server, state->inode);
+ 	nfs4_opendata_put(opendata);
+ 	nfs4_put_state_owner(sp);
+ 	*res = state;
+-- 
+1.7.10.1
+

Modified: dists/sid/linux-2.6/debian/patches/series/base
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/base	Sat May 12 09:30:01 2012	(r18990)
+++ dists/sid/linux-2.6/debian/patches/series/base	Sat May 12 09:37:26 2012	(r18991)
@@ -192,3 +192,4 @@
 
 + bugfix/all/ext4-Report-max_batch_time-option-correctly.patch
 + bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch
++ bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch



More information about the Kernel-svn-changes mailing list