diff options
| -rw-r--r-- | arch/x86_64/mm/fault.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c index 327c9f2fa626..54816adb8e93 100644 --- a/arch/x86_64/mm/fault.c +++ b/arch/x86_64/mm/fault.c | |||
| @@ -374,6 +374,13 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, | |||
| 374 | if (unlikely(in_atomic() || !mm)) | 374 | if (unlikely(in_atomic() || !mm)) |
| 375 | goto bad_area_nosemaphore; | 375 | goto bad_area_nosemaphore; |
| 376 | 376 | ||
| 377 | /* | ||
| 378 | * User-mode registers count as a user access even for any | ||
| 379 | * potential system fault or CPU buglet. | ||
| 380 | */ | ||
| 381 | if (user_mode_vm(regs)) | ||
| 382 | error_code |= PF_USER; | ||
| 383 | |||
| 377 | again: | 384 | again: |
| 378 | /* When running in the kernel we expect faults to occur only to | 385 | /* When running in the kernel we expect faults to occur only to |
| 379 | * addresses in user space. All other faults represent errors in the | 386 | * addresses in user space. All other faults represent errors in the |
