hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/arch/nios2/kernel/sys_nios2.c
....@@ -22,6 +22,7 @@
2222 unsigned int op)
2323 {
2424 struct vm_area_struct *vma;
25
+ struct mm_struct *mm = current->mm;
2526
2627 if (len == 0)
2728 return 0;
....@@ -34,16 +35,22 @@
3435 if (addr + len < addr)
3536 return -EFAULT;
3637
38
+ if (mmap_read_lock_killable(mm))
39
+ return -EINTR;
40
+
3741 /*
3842 * Verify that the specified address region actually belongs
3943 * to this process.
4044 */
41
- vma = find_vma(current->mm, addr);
42
- if (vma == NULL || addr < vma->vm_start || addr + len > vma->vm_end)
45
+ vma = find_vma(mm, addr);
46
+ if (vma == NULL || addr < vma->vm_start || addr + len > vma->vm_end) {
47
+ mmap_read_unlock(mm);
4348 return -EFAULT;
49
+ }
4450
4551 flush_cache_range(vma, addr, addr + len);
4652
53
+ mmap_read_unlock(mm);
4754 return 0;
4855 }
4956