Commit 844b43adba74d97f15e56b103c97bfcccaa01aa6
Committed by
Paul Mundt
1 parent
3ce5445046
Exists in
master
and in
39 other branches
sh: Fix argument page dcache flushing regression.
In the do_execve() path, argument page handling used to explicitly call flush_dcache_page() for each page, this has since been reworked and uses flush_kernel_dcache_page() instead, which is presently a nop. Doing a simple modprobe/rmmod in a loop under busybox consistently manages to crash without providing a sane flush_kernel_dcache_page() implementation, so, plug in a simple implementation. Signed-off-by: Carmelo Amoroso <carmelo73@gmail.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Showing 1 changed file with 6 additions and 0 deletions Side-by-side Diff
include/asm-sh/cacheflush.h
... | ... | @@ -43,6 +43,12 @@ |
43 | 43 | extern void __flush_invalidate_region(void *start, int size); |
44 | 44 | #endif |
45 | 45 | |
46 | +#define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE | |
47 | +static inline void flush_kernel_dcache_page(struct page *page) | |
48 | +{ | |
49 | + flush_dcache_page(page); | |
50 | +} | |
51 | + | |
46 | 52 | #if defined(CONFIG_CPU_SH4) && !defined(CONFIG_CACHE_OFF) |
47 | 53 | extern void copy_to_user_page(struct vm_area_struct *vma, |
48 | 54 | struct page *page, unsigned long vaddr, void *dst, const void *src, |