jfs: fix readdir regression
authorDave Kleikamp <dave.kleikamp@oracle.com>
Mon, 23 Mar 2015 21:06:26 +0000 (16:06 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Apr 2015 08:33:57 +0000 (10:33 +0200)
Upstream commit 44512449, "jfs: fix readdir cookie incompatibility
with NFSv4", was backported incorrectly into the stable trees which
used the filldir callback (rather than dir_emit). The position is
being incorrectly passed to filldir for the . and .. entries.

The still-maintained stable trees that need to be fixed are 3.2.y,
3.4.y and 3.10.y.

https://bugzilla.kernel.org/show_bug.cgi?id=94741

Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Cc: jfs-discussion@lists.sourceforge.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/jfs/jfs_dtree.c

index c450fdb3d78d21575440fb73bed5bb5e0ae911e8..5d876b1c9ea452ca8afd4daa3511e69c78adb59b 100644 (file)
@@ -3103,7 +3103,7 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
                                 * self "."
                                 */
                                filp->f_pos = 1;
-                               if (filldir(dirent, ".", 1, 0, ip->i_ino,
+                               if (filldir(dirent, ".", 1, 1, ip->i_ino,
                                            DT_DIR))
                                        return 0;
                        }
@@ -3111,7 +3111,7 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
                         * parent ".."
                         */
                        filp->f_pos = 2;
-                       if (filldir(dirent, "..", 2, 1, PARENT(ip), DT_DIR))
+                       if (filldir(dirent, "..", 2, 2, PARENT(ip), DT_DIR))
                                return 0;
 
                        /*