projects
/
GitHub
/
moto-9609
/
android_kernel_motorola_exynos9610.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
83715ad
)
This fixes a panic doing the first READDIR or READDIRPLUS call when:
author
Trond Myklebust
<Trond.Myklebust@netapp.com>
Wed, 5 Jul 2006 17:17:12 +0000
(13:17 -0400)
committer
Trond Myklebust
<Trond.Myklebust@netapp.com>
Wed, 5 Jul 2006 17:17:12 +0000
(13:17 -0400)
* the client is ia64 or any platform that actually implements
flush_dcache_page(), and
* the server returns fsinfo.dtpref >= client's PAGE_SIZE, and
* the server does *not* return post-op attributes for the directory
in the READDIR reply.
Problem diagnosed by Greg Banks <gnb@melbourne.sgi.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
net/sunrpc/xdr.c
patch
|
blob
|
blame
|
history
diff --git
a/net/sunrpc/xdr.c
b/net/sunrpc/xdr.c
index 49174f0d0a3e5545535864f6c7d66e7debd7d151..6ac45103a272343a885a234cdda576dc6b655088 100644
(file)
--- a/
net/sunrpc/xdr.c
+++ b/
net/sunrpc/xdr.c
@@
-191,7
+191,6
@@
_shift_data_right_pages(struct page **pages, size_t pgto_base,
do {
/* Are any pointers crossing a page boundary? */
if (pgto_base == 0) {
- flush_dcache_page(*pgto);
pgto_base = PAGE_CACHE_SIZE;
pgto--;
}
@@
-211,11
+210,11
@@
_shift_data_right_pages(struct page **pages, size_t pgto_base,
vto = kmap_atomic(*pgto, KM_USER0);
vfrom = kmap_atomic(*pgfrom, KM_USER1);
memmove(vto + pgto_base, vfrom + pgfrom_base, copy);
+ flush_dcache_page(*pgto);
kunmap_atomic(vfrom, KM_USER1);
kunmap_atomic(vto, KM_USER0);
} while ((len -= copy) != 0);
- flush_dcache_page(*pgto);
}
/*