lkml.org 
[lkml]   [2015]   [Oct]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 06/36] x86/entry: Move lockdep_sys_exit to prepare_exit_to_usermode
    Date
    Rather than worrying about exactly where LOCKDEP_SYS_EXIT should go
    in the asm code, add it to prepare_exit_from_usermode and remove all
    of the asm calls that are followed by prepare_exit_to_usermode.

    LOCKDEP_SYS_EXIT now appears only in the syscall fast paths.

    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    ---
    arch/x86/entry/common.c | 2 ++
    arch/x86/entry/entry_32.S | 2 --
    arch/x86/entry/entry_64.S | 1 -
    3 files changed, 2 insertions(+), 3 deletions(-)

    diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c
    index 80dcc9261ca3..d94a60c16029 100644
    --- a/arch/x86/entry/common.c
    +++ b/arch/x86/entry/common.c
    @@ -220,6 +220,8 @@ __visible void prepare_exit_to_usermode(struct pt_regs *regs)
    if (WARN_ON(!irqs_disabled()))
    local_irq_disable();

    + lockdep_sys_exit();
    +
    /*
    * In order to return to user mode, we need to have IRQs off with
    * none of _TIF_SIGPENDING, _TIF_NOTIFY_RESUME, _TIF_USER_RETURN_NOTIFY,
    diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
    index b2909bf8cf70..a08ded481aba 100644
    --- a/arch/x86/entry/entry_32.S
    +++ b/arch/x86/entry/entry_32.S
    @@ -255,7 +255,6 @@ ret_from_intr:
    jb resume_kernel # not returning to v8086 or userspace

    ENTRY(resume_userspace)
    - LOCKDEP_SYS_EXIT
    DISABLE_INTERRUPTS(CLBR_ANY)
    TRACE_IRQS_OFF
    movl %esp, %eax
    @@ -372,7 +371,6 @@ syscall_call:
    syscall_after_call:
    movl %eax, PT_EAX(%esp) # store the return value
    syscall_exit:
    - LOCKDEP_SYS_EXIT
    jmp syscall_exit_work

    restore_all:
    diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
    index d3033183ed70..766254c2068b 100644
    --- a/arch/x86/entry/entry_64.S
    +++ b/arch/x86/entry/entry_64.S
    @@ -557,7 +557,6 @@ ret_from_intr:
    jz retint_kernel

    /* Interrupt came from user space */
    - LOCKDEP_SYS_EXIT_IRQ
    GLOBAL(retint_user)
    mov %rsp,%rdi
    call prepare_exit_to_usermode
    --
    2.4.3


    \
     
     \ /
      Last update: 2015-10-06 03:21    [W:4.065 / U:0.436 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site