mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-11-08 19:55:16 -05:00
| Filename | Latest commit message | Latest commit date |
|---|---|---|
On recent 2.6.38-rc kernels, connectathon basic test 6 fails on
NFSv4 mounts of OpenSolaris with something like:
> ./test6: readdir
> ./test6: (/mnt/klimt/matisse.test) didn't read expected 'file.12' dir entry, pass 0
> ./test6: (/mnt/klimt/matisse.test) didn't read expected 'file.82' dir entry, pass 0
> ./test6: (/mnt/klimt/matisse.test) didn't read expected 'file.164' dir entry, pass 0
> ./test6: (/mnt/klimt/matisse.test) Test failed with 3 errors
> basic tests failed
> Tests failed, leaving /mnt/klimt mounted
> [cel@matisse cthon04]$
I narrowed the problem down to nfs4_decode_dirent() reporting that the
decode buffer had overflowed while decoding the entries for those
missing files.
verify_attr_len() assumes both it's pointer arguments reside on the
same page. When these arguments point to locations on two different
pages, verify_attr_len() can report false errors. This can happen now
that a large NFSv4 readdir result can span pages.
We have reasonably good checking in nfs4_decode_dirent() anyway, so
it should be safe to simply remove the extra checking.
At a guess, this was introduced by commit
|
||
| .. | ||
| cache_lib.c | ||
| cache_lib.h | ||
| callback.c | ||
| callback.h | ||
| callback_proc.c | ||
| callback_xdr.c | ||
| client.c | ||
| delegation.c | ||
| delegation.h | ||
| dir.c | ||
| direct.c | ||
| dns_resolve.c | ||
| dns_resolve.h | ||
| file.c | ||
| fscache-index.c | ||
| fscache.c | ||
| fscache.h | ||
| getroot.c | ||
| idmap.c | ||
| inode.c | ||
| internal.h | ||
| iostat.h | ||
| Kconfig | ||
| Makefile | ||
| mount_clnt.c | ||
| namespace.c | ||
| nfs2xdr.c | ||
| nfs3acl.c | ||
| nfs3proc.c | ||
| nfs3xdr.c | ||
| nfs4_fs.h | ||
| nfs4filelayout.c | ||
| nfs4filelayout.h | ||
| nfs4filelayoutdev.c | ||
| nfs4namespace.c | ||
| nfs4proc.c | ||
| nfs4renewd.c | ||
| nfs4state.c | ||
| nfs4xdr.c | ||
| nfsroot.c | ||
| pagelist.c | ||
| pnfs.c | ||
| pnfs.h | ||
| proc.c | ||
| read.c | ||
| super.c | ||
| symlink.c | ||
| sysctl.c | ||
| unlink.c | ||
| write.c | ||