diff options
| -rw-r--r-- | arch/x86/kernel/entry_32.S | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index 899e8938e79f..c929add475c9 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
| @@ -442,8 +442,7 @@ sysenter_past_esp: | |||
| 442 | 442 | ||
| 443 | GET_THREAD_INFO(%ebp) | 443 | GET_THREAD_INFO(%ebp) |
| 444 | 444 | ||
| 445 | /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ | 445 | testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) |
| 446 | testw $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) | ||
| 447 | jnz sysenter_audit | 446 | jnz sysenter_audit |
| 448 | sysenter_do_call: | 447 | sysenter_do_call: |
| 449 | cmpl $(nr_syscalls), %eax | 448 | cmpl $(nr_syscalls), %eax |
| @@ -454,7 +453,7 @@ sysenter_do_call: | |||
| 454 | DISABLE_INTERRUPTS(CLBR_ANY) | 453 | DISABLE_INTERRUPTS(CLBR_ANY) |
| 455 | TRACE_IRQS_OFF | 454 | TRACE_IRQS_OFF |
| 456 | movl TI_flags(%ebp), %ecx | 455 | movl TI_flags(%ebp), %ecx |
| 457 | testw $_TIF_ALLWORK_MASK, %cx | 456 | testl $_TIF_ALLWORK_MASK, %ecx |
| 458 | jne sysexit_audit | 457 | jne sysexit_audit |
| 459 | sysenter_exit: | 458 | sysenter_exit: |
| 460 | /* if something modifies registers it must also disable sysexit */ | 459 | /* if something modifies registers it must also disable sysexit */ |
| @@ -468,7 +467,7 @@ sysenter_exit: | |||
| 468 | 467 | ||
| 469 | #ifdef CONFIG_AUDITSYSCALL | 468 | #ifdef CONFIG_AUDITSYSCALL |
| 470 | sysenter_audit: | 469 | sysenter_audit: |
| 471 | testw $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%ebp) | 470 | testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%ebp) |
| 472 | jnz syscall_trace_entry | 471 | jnz syscall_trace_entry |
| 473 | addl $4,%esp | 472 | addl $4,%esp |
| 474 | CFI_ADJUST_CFA_OFFSET -4 | 473 | CFI_ADJUST_CFA_OFFSET -4 |
| @@ -485,7 +484,7 @@ sysenter_audit: | |||
| 485 | jmp sysenter_do_call | 484 | jmp sysenter_do_call |
| 486 | 485 | ||
| 487 | sysexit_audit: | 486 | sysexit_audit: |
| 488 | testw $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %cx | 487 | testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %ecx |
| 489 | jne syscall_exit_work | 488 | jne syscall_exit_work |
| 490 | TRACE_IRQS_ON | 489 | TRACE_IRQS_ON |
| 491 | ENABLE_INTERRUPTS(CLBR_ANY) | 490 | ENABLE_INTERRUPTS(CLBR_ANY) |
| @@ -498,7 +497,7 @@ sysexit_audit: | |||
| 498 | DISABLE_INTERRUPTS(CLBR_ANY) | 497 | DISABLE_INTERRUPTS(CLBR_ANY) |
| 499 | TRACE_IRQS_OFF | 498 | TRACE_IRQS_OFF |
| 500 | movl TI_flags(%ebp), %ecx | 499 | movl TI_flags(%ebp), %ecx |
| 501 | testw $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %cx | 500 | testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %ecx |
| 502 | jne syscall_exit_work | 501 | jne syscall_exit_work |
| 503 | movl PT_EAX(%esp),%eax /* reload syscall return value */ | 502 | movl PT_EAX(%esp),%eax /* reload syscall return value */ |
| 504 | jmp sysenter_exit | 503 | jmp sysenter_exit |
| @@ -523,8 +522,7 @@ ENTRY(system_call) | |||
| 523 | SAVE_ALL | 522 | SAVE_ALL |
| 524 | GET_THREAD_INFO(%ebp) | 523 | GET_THREAD_INFO(%ebp) |
| 525 | # system call tracing in operation / emulation | 524 | # system call tracing in operation / emulation |
| 526 | /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ | 525 | testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) |
| 527 | testw $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) | ||
| 528 | jnz syscall_trace_entry | 526 | jnz syscall_trace_entry |
| 529 | cmpl $(nr_syscalls), %eax | 527 | cmpl $(nr_syscalls), %eax |
| 530 | jae syscall_badsys | 528 | jae syscall_badsys |
| @@ -538,7 +536,7 @@ syscall_exit: | |||
| 538 | # between sampling and the iret | 536 | # between sampling and the iret |
| 539 | TRACE_IRQS_OFF | 537 | TRACE_IRQS_OFF |
| 540 | movl TI_flags(%ebp), %ecx | 538 | movl TI_flags(%ebp), %ecx |
| 541 | testw $_TIF_ALLWORK_MASK, %cx # current->work | 539 | testl $_TIF_ALLWORK_MASK, %ecx # current->work |
| 542 | jne syscall_exit_work | 540 | jne syscall_exit_work |
| 543 | 541 | ||
| 544 | restore_all: | 542 | restore_all: |
| @@ -673,7 +671,7 @@ END(syscall_trace_entry) | |||
| 673 | # perform syscall exit tracing | 671 | # perform syscall exit tracing |
| 674 | ALIGN | 672 | ALIGN |
| 675 | syscall_exit_work: | 673 | syscall_exit_work: |
| 676 | testb $_TIF_WORK_SYSCALL_EXIT, %cl | 674 | testl $_TIF_WORK_SYSCALL_EXIT, %ecx |
| 677 | jz work_pending | 675 | jz work_pending |
| 678 | TRACE_IRQS_ON | 676 | TRACE_IRQS_ON |
| 679 | ENABLE_INTERRUPTS(CLBR_ANY) # could let syscall_trace_leave() call | 677 | ENABLE_INTERRUPTS(CLBR_ANY) # could let syscall_trace_leave() call |
