When the superuser flushes the entire cache, the mmap_read_lock() is not
taken, but mmap_read_unlock() is called.  Add the missing
mmap_read_lock() call.

Signed-off-by: Liam R. Howlett <liam.howl...@oracle.com>
---
 arch/m68k/kernel/sys_m68k.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/m68k/kernel/sys_m68k.c b/arch/m68k/kernel/sys_m68k.c
index 1c235d8f53f3..f55bdcb8e4f1 100644
--- a/arch/m68k/kernel/sys_m68k.c
+++ b/arch/m68k/kernel/sys_m68k.c
@@ -388,6 +388,8 @@ sys_cacheflush (unsigned long addr, int scope, int cache, 
unsigned long len)
                ret = -EPERM;
                if (!capable(CAP_SYS_ADMIN))
                        goto out;
+
+               mmap_read_lock(current->mm);
        } else {
                struct vm_area_struct *vma;
 
-- 
2.30.0

Reply via email to