Root/target/linux/generic/patches-3.3/309-mips_fuse_workaround.patch

1--- a/arch/mips/mm/cache.c
2+++ b/arch/mips/mm/cache.c
3@@ -39,6 +39,7 @@ void (*__flush_kernel_vmap_range)(unsign
4 void (*__invalidate_kernel_vmap_range)(unsigned long vaddr, int size);
5 
6 EXPORT_SYMBOL_GPL(__flush_kernel_vmap_range);
7+EXPORT_SYMBOL(__flush_cache_all);
8 
9 /* MIPS specific cache operations */
10 void (*flush_cache_sigtramp)(unsigned long addr);
11--- a/fs/fuse/dev.c
12+++ b/fs/fuse/dev.c
13@@ -19,6 +19,9 @@
14 #include <linux/pipe_fs_i.h>
15 #include <linux/swap.h>
16 #include <linux/splice.h>
17+#ifdef CONFIG_MIPS
18+#include <asm/cacheflush.h>
19+#endif
20 
21 MODULE_ALIAS_MISCDEV(FUSE_MINOR);
22 MODULE_ALIAS("devname:fuse");
23@@ -655,6 +658,9 @@ static int fuse_copy_fill(struct fuse_co
24 static int fuse_copy_do(struct fuse_copy_state *cs, void **val, unsigned *size)
25 {
26     unsigned ncpy = min(*size, cs->len);
27+#ifdef CONFIG_MIPS
28+ __flush_cache_all();
29+#endif
30     if (val) {
31         if (cs->write)
32             memcpy(cs->buf, *val, ncpy);
33

Archive Download this file



interactive