--- a/arch/mips/mm/cache.c +++ b/arch/mips/mm/cache.c @@ -39,6 +39,7 @@ void (*__flush_kernel_vmap_range)(unsign void (*__invalidate_kernel_vmap_range)(unsigned long vaddr, int size); EXPORT_SYMBOL_GPL(__flush_kernel_vmap_range); +EXPORT_SYMBOL(__flush_cache_all); /* MIPS specific cache operations */ void (*flush_cache_sigtramp)(unsigned long addr); --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -20,6 +20,9 @@ #include <linux/swap.h> #include <linux/splice.h> #include <linux/aio.h> +#ifdef CONFIG_MIPS +#include <asm/cacheflush.h> +#endif MODULE_ALIAS_MISCDEV(FUSE_MINOR); MODULE_ALIAS("devname:fuse"); @@ -759,6 +762,9 @@ static int fuse_copy_fill(struct fuse_co static int fuse_copy_do(struct fuse_copy_state *cs, void **val, unsigned *size) { unsigned ncpy = min(*size, cs->len); +#ifdef CONFIG_MIPS + __flush_cache_all(); +#endif if (val) { if (cs->write) memcpy(cs->buf, *val, ncpy);