r4306 - in dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian: . patches patches/series

Simon Horman horms at costa.debian.org
Wed Oct 5 07:15:35 UTC 2005


Author: horms
Date: 2005-10-05 07:15:33 +0000 (Wed, 05 Oct 2005)
New Revision: 4306

Added:
   dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/fs-ext3-nfs-parent-fix.dpatch
Modified:
   dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog
   dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-17
Log:
+  * ext3 file systems mounted over nfs may lookup .. in dx directories
+    causing an oops.
+    (closes: #323557)


Modified: dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog
===================================================================
--- dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog	2005-10-04 03:16:48 UTC (rev 4305)
+++ dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog	2005-10-05 07:15:33 UTC (rev 4306)
@@ -239,12 +239,16 @@
     Make sure BLK_DEV_IDEDMA_PCI is defined for pmac ide driver builds
     (closes: #321442)
 
+  * ext3 file systems mounted over nfs may lookup .. in dx directories
+    causing an oops.
+    (closes: #323557)
+
   [ dann frazier ]
   * mempolicy-check-mode.dpatch
     [SECURITY] Input validation in sys_set_mempolicy(); local DoS.
     See CAN-2005-3053
 
- -- dann frazier <dannf at debian.org>  Tue, 27 Sep 2005 15:18:57 -0600
+ -- Simon Horman <horms at debian.org>  Wed,  5 Oct 2005 16:11:27 +0900
 
 kernel-source-2.6.8 (2.6.8-16) unstable; urgency=low
 

Added: dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/fs-ext3-nfs-parent-fix.dpatch
===================================================================
--- dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/fs-ext3-nfs-parent-fix.dpatch	2005-10-04 03:16:48 UTC (rev 4305)
+++ dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/fs-ext3-nfs-parent-fix.dpatch	2005-10-05 07:15:33 UTC (rev 4306)
@@ -0,0 +1,55 @@
+commit acfa1823d33859b0db77701726c9ca5ccc6e6f25
+tree 356c2edeed8e8a505ed03c6f9d04dc659e84d341
+parent d6e711448137ca3301512cec41a2c2ce852b3d0a
+author Andreas Dilger <adilger at clusterfs.com> Thu, 23 Jun 2005 00:09:45 -0700
+committer Linus Torvalds <torvalds at ppc970.osdl.org> Thu, 23 Jun 2005 09:45:26 -0700
+
+    [PATCH] Support for dx directories in ext3_get_parent (NFSD)
+    
+    Henrik Grubbstrom noted:
+    
+    The 2.6.10 ext3_get_parent attempts to use ext3_find_entry to look up the
+    entry "..", which fails for dx directories since ".." is not present in the
+    directory hash table.  The patch below solves this by looking up the dotdot
+    entry in the dx_root block.
+    
+    Typical symptoms of the above bug are intermittent claims by nfsd that
+    files or directories are missing on exported ext3 filesystems.
+    
+    cf https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=3D150759 and
+    https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=3D144556
+    
+    ext3_get_parent() is IMHO the wrong place to fix this bug as it introduces
+    a lot of internals from htree into that function.  Instead, I think this
+    should be fixed in ext3_find_entry() as in the below patch.  This has the
+    added advantage that it works for any callers of ext3_find_entry() and not
+    just ext3_lookup_parent().
+    
+    Signed-off-by: Andreas Dilger <adilger at clusterfs.com>
+    Signed-off-by: Henrik Grubbstrom <grubba at grubba.org>
+    Cc: <ext2-devel at lists.sourceforge.net>
+    Signed-off-by: Andrew Morton <akpm at osdl.org>
+    Signed-off-by: Linus Torvalds <torvalds at osdl.org>
+
+diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c
+--- a/fs/ext3/namei.c
++++ b/fs/ext3/namei.c
+@@ -932,8 +932,16 @@ static struct buffer_head * ext3_dx_find
+ 	struct inode *dir = dentry->d_parent->d_inode;
+ 
+ 	sb = dir->i_sb;
+-	if (!(frame = dx_probe(dentry, NULL, &hinfo, frames, err)))
+-		return NULL;
++	/* NFS may look up ".." - look at dx_root directory block */
++	if (namelen > 2 || name[0] != '.'||(name[1] != '.' && name[1] != '\0')){
++		if (!(frame = dx_probe(dentry, NULL, &hinfo, frames, err)))
++			return NULL;
++	} else {
++		frame = frames;
++		frame->bh = NULL;			/* for dx_release() */
++		frame->at = (struct dx_entry *)frames;	/* hack for zero entry*/
++		dx_set_block(frame->at, 0);		/* dx_root block is 0 */
++	}
+ 	hash = hinfo.hash;
+ 	do {
+ 		block = dx_get_block(frame->at);

Modified: dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-17
===================================================================
--- dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-17	2005-10-04 03:16:48 UTC (rev 4305)
+++ dists/sarge/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-17	2005-10-05 07:15:33 UTC (rev 4306)
@@ -62,3 +62,4 @@
 + ipv6-skb-leak.dpatch
 + drivers-ide-ppp-pmac-build.dpatch
 + mempolicy-check-mode.dpatch
++ fs-ext3-nfs-parent-fix.dpatch




More information about the Kernel-svn-changes mailing list