mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 14:19:16 +00:00
LoongArch: Fix access error when read fault on a write-only VMA
commitefb44ff64c
upstream. As with most architectures, allow handling of read faults in VMAs that have VM_WRITE but without VM_READ (WRITE implies READ). Otherwise, reading before writing a write-only memory will error while reading after writing everything is fine. BTW, move the VM_EXEC judgement before VM_READ/VM_WRITE to make logic a little clearer. Cc: stable@vger.kernel.org Fixes:09cfefb7fa
("LoongArch: Add memory management") Signed-off-by: Jiantao Shan <shanjiantao@loongson.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
de357db4af
commit
2e10596980
1 changed files with 2 additions and 2 deletions
|
@ -202,10 +202,10 @@ static void __kprobes __do_page_fault(struct pt_regs *regs,
|
||||||
if (!(vma->vm_flags & VM_WRITE))
|
if (!(vma->vm_flags & VM_WRITE))
|
||||||
goto bad_area;
|
goto bad_area;
|
||||||
} else {
|
} else {
|
||||||
if (!(vma->vm_flags & VM_READ) && address != exception_era(regs))
|
|
||||||
goto bad_area;
|
|
||||||
if (!(vma->vm_flags & VM_EXEC) && address == exception_era(regs))
|
if (!(vma->vm_flags & VM_EXEC) && address == exception_era(regs))
|
||||||
goto bad_area;
|
goto bad_area;
|
||||||
|
if (!(vma->vm_flags & (VM_READ | VM_WRITE)) && address != exception_era(regs))
|
||||||
|
goto bad_area;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue