diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-11-09 15:25:44 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-11-09 15:25:44 -0500 |
commit | 8b805ef617cf0e02f6d18b891f8deb6246421b01 (patch) | |
tree | 35759385f2834d48a10025f949e49e0c77095876 | |
parent | cb56d98e2a7530615899597551db685d68a2e852 (diff) | |
parent | b726e923ea4d216027e466aa602d914e4b4a63af (diff) |
Merge branch 'for-2.6.28' of git://linux-nfs.org/~bfields/linux
* 'for-2.6.28' of git://linux-nfs.org/~bfields/linux:
Fix nfsd truncation of readdir results
-rw-r--r-- | fs/nfsd/vfs.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 848a03e83a42..4433c8f00163 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c | |||
@@ -1875,11 +1875,11 @@ static int nfsd_buffered_readdir(struct file *file, filldir_t func, | |||
1875 | return -ENOMEM; | 1875 | return -ENOMEM; |
1876 | 1876 | ||
1877 | offset = *offsetp; | 1877 | offset = *offsetp; |
1878 | cdp->err = nfserr_eof; /* will be cleared on successful read */ | ||
1879 | 1878 | ||
1880 | while (1) { | 1879 | while (1) { |
1881 | unsigned int reclen; | 1880 | unsigned int reclen; |
1882 | 1881 | ||
1882 | cdp->err = nfserr_eof; /* will be cleared on successful read */ | ||
1883 | buf.used = 0; | 1883 | buf.used = 0; |
1884 | buf.full = 0; | 1884 | buf.full = 0; |
1885 | 1885 | ||
@@ -1912,9 +1912,6 @@ static int nfsd_buffered_readdir(struct file *file, filldir_t func, | |||
1912 | de = (struct buffered_dirent *)((char *)de + reclen); | 1912 | de = (struct buffered_dirent *)((char *)de + reclen); |
1913 | } | 1913 | } |
1914 | offset = vfs_llseek(file, 0, SEEK_CUR); | 1914 | offset = vfs_llseek(file, 0, SEEK_CUR); |
1915 | cdp->err = nfserr_eof; | ||
1916 | if (!buf.full) | ||
1917 | break; | ||
1918 | } | 1915 | } |
1919 | 1916 | ||
1920 | done: | 1917 | done: |