summaryrefslogtreecommitdiffstats
path: root/fs/9p/vfs_dir.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2015-04-22 11:55:14 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2015-04-24 15:45:03 -0400
commit8e3c500594dca9a12c27eb6d77b82e0766879bfd (patch)
tree1bb64839f3aa1ccff5e694a405cb9e2d4a344ba7 /fs/9p/vfs_dir.c
parentbb668734c4c960c8f61f017585b323b97e5f47b5 (diff)
downloadlinux-8e3c500594dca9a12c27eb6d77b82e0766879bfd.tar.gz
linux-8e3c500594dca9a12c27eb6d77b82e0766879bfd.tar.bz2
linux-8e3c500594dca9a12c27eb6d77b82e0766879bfd.zip
fs/9p: fix readdir()
Al Viro's IOV changes broke 9p readdir() because the new code didn't abort the read when it returned nothing. The original code checked if the combined error/length was <= 0 but in the new code that accidentally got changed to just an error check. Add back the return from the function when nothing is read. Cc: Al Viro <viro@zeniv.linux.org.uk> Fixes: e1200fe68f20 ("9p: switch p9_client_read() to passing struct iov_iter *") Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/9p/vfs_dir.c')
-rw-r--r--fs/9p/vfs_dir.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/9p/vfs_dir.c b/fs/9p/vfs_dir.c
index 76c3b1ab6361..5cc00e56206e 100644
--- a/fs/9p/vfs_dir.c
+++ b/fs/9p/vfs_dir.c
@@ -138,6 +138,8 @@ static int v9fs_dir_readdir(struct file *file, struct dir_context *ctx)
&err);
if (err)
return err;
+ if (n == 0)
+ return 0;
rdir->head = 0;
rdir->tail = n;