lkml.org 
[lkml]   [2018]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 2/5] mips: add +1 to __NR_syscalls in uapi header
    Date
    All other architectures are hold a value for __NR_syscalls will
    be equal to the last system call number +1.

    But in mips architecture, __NR_syscalls hold the value equal to
    total number of system exits in the architecture. One of the
    patch in this patch series will genarate uapi header files.

    In order to make the implementation common across all architect-
    ures, add +1 to __NR_syscalls, which will be equal to the last
    system call number +1.

    Signed-off-by: Firoz Khan <firoz.khan@linaro.org>
    ---
    arch/mips/include/asm/unistd.h | 6 +++---
    arch/mips/include/uapi/asm/unistd.h | 6 +++---
    arch/mips/kernel/ftrace.c | 6 +++---
    arch/mips/kernel/scall32-o32.S | 6 +++---
    arch/mips/kernel/scall64-64.S | 2 +-
    arch/mips/kernel/scall64-n32.S | 4 ++--
    arch/mips/kernel/scall64-o32.S | 6 +++---
    7 files changed, 18 insertions(+), 18 deletions(-)

    diff --git a/arch/mips/include/asm/unistd.h b/arch/mips/include/asm/unistd.h
    index c68b8ae..16f21c3 100644
    --- a/arch/mips/include/asm/unistd.h
    +++ b/arch/mips/include/asm/unistd.h
    @@ -15,11 +15,11 @@
    #include <uapi/asm/unistd.h>

    #ifdef CONFIG_MIPS32_N32
    -#define NR_syscalls (__NR_N32_Linux + __NR_N32_Linux_syscalls)
    +#define NR_syscalls (__NR_N32_Linux + __NR_N32_Linux_syscalls - 1)
    #elif defined(CONFIG_64BIT)
    -#define NR_syscalls (__NR_64_Linux + __NR_64_Linux_syscalls)
    +#define NR_syscalls (__NR_64_Linux + __NR_64_Linux_syscalls - 1)
    #else
    -#define NR_syscalls (__NR_O32_Linux + __NR_O32_Linux_syscalls)
    +#define NR_syscalls (__NR_O32_Linux + __NR_O32_Linux_syscalls - 1)
    #endif

    #ifndef __ASSEMBLY__
    diff --git a/arch/mips/include/uapi/asm/unistd.h b/arch/mips/include/uapi/asm/unistd.h
    index 0ccf954..9a19b347 100644
    --- a/arch/mips/include/uapi/asm/unistd.h
    +++ b/arch/mips/include/uapi/asm/unistd.h
    @@ -392,7 +392,7 @@
    #define __NR_io_pgetevents (__NR_Linux + 368)

    #ifdef __KERNEL__
    -#define __NR_syscalls 368
    +#define __NR_syscalls 369
    #endif

    /*
    @@ -742,7 +742,7 @@
    #define __NR_io_pgetevents (__NR_Linux + 328)

    #ifdef __KERNEL__
    -#define __NR_syscalls 328
    +#define __NR_syscalls 329
    #endif

    /*
    @@ -1096,7 +1096,7 @@
    #define __NR_io_pgetevents (__NR_Linux + 332)

    #ifdef __KERNEL__
    -#define __NR_syscalls 332
    +#define __NR_syscalls 333
    #endif

    /*
    diff --git a/arch/mips/kernel/ftrace.c b/arch/mips/kernel/ftrace.c
    index 7f3dfdb..add4301 100644
    --- a/arch/mips/kernel/ftrace.c
    +++ b/arch/mips/kernel/ftrace.c
    @@ -410,13 +410,13 @@ unsigned long __init arch_syscall_addr(int nr)
    unsigned long __init arch_syscall_addr(int nr)
    {
    #ifdef CONFIG_MIPS32_N32
    - if (nr >= __NR_N32_Linux && nr <= __NR_N32_Linux + __NR_N32_Linux_syscalls)
    + if (nr >= __NR_N32_Linux && nr <= __NR_N32_Linux + __NR_N32_Linux_syscalls - 1)
    return (unsigned long)sysn32_call_table[nr - __NR_N32_Linux];
    #endif
    - if (nr >= __NR_64_Linux && nr <= __NR_64_Linux + __NR_64_Linux_syscalls)
    + if (nr >= __NR_64_Linux && nr <= __NR_64_Linux + __NR_64_Linux_syscalls - 1)
    return (unsigned long)sys_call_table[nr - __NR_64_Linux];
    #ifdef CONFIG_MIPS32_O32
    - if (nr >= __NR_O32_Linux && nr <= __NR_O32_Linux + __NR_O32_Linux_syscalls)
    + if (nr >= __NR_O32_Linux && nr <= __NR_O32_Linux + __NR_O32_Linux_syscalls - 1)
    return (unsigned long)sys32_call_table[nr - __NR_O32_Linux];
    #endif

    diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S
    index 91d3c8c..a9b895f 100644
    --- a/arch/mips/kernel/scall32-o32.S
    +++ b/arch/mips/kernel/scall32-o32.S
    @@ -23,7 +23,7 @@
    #include <asm/asm-offsets.h>

    /* Highest syscall used of any syscall flavour */
    -#define MAX_SYSCALL_NO __NR_O32_Linux + __NR_O32_Linux_syscalls
    +#define MAX_SYSCALL_NO __NR_O32_Linux + __NR_O32_Linux_syscalls - 1

    .align 5
    NESTED(handle_sys, PT_SIZE, sp)
    @@ -89,7 +89,7 @@ loads_done:
    bnez t0, syscall_trace_entry # -> yes
    syscall_common:
    subu v0, v0, __NR_O32_Linux # check syscall number
    - sltiu t0, v0, __NR_O32_Linux_syscalls + 1
    + sltiu t0, v0, __NR_O32_Linux_syscalls
    beqz t0, illegal_syscall

    sll t0, v0, 2
    @@ -185,7 +185,7 @@ illegal_syscall:

    LEAF(sys_syscall)
    subu t0, a0, __NR_O32_Linux # check syscall number
    - sltiu v0, t0, __NR_O32_Linux_syscalls + 1
    + sltiu v0, t0, __NR_O32_Linux_syscalls
    beqz t0, einval # do not recurse
    sll t1, t0, 2
    beqz v0, einval
    diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S
    index 358d959..0b67fed 100644
    --- a/arch/mips/kernel/scall64-64.S
    +++ b/arch/mips/kernel/scall64-64.S
    @@ -54,7 +54,7 @@ NESTED(handle_sys64, PT_SIZE, sp)

    syscall_common:
    dsubu t2, v0, __NR_64_Linux
    - sltiu t0, t2, __NR_64_Linux_syscalls + 1
    + sltiu t0, t2, __NR_64_Linux_syscalls
    beqz t0, illegal_syscall

    dsll t0, t2, 3 # offset into table
    diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
    index c65eaac..6468546 100644
    --- a/arch/mips/kernel/scall64-n32.S
    +++ b/arch/mips/kernel/scall64-n32.S
    @@ -33,7 +33,7 @@ NESTED(handle_sysn32, PT_SIZE, sp)
    #endif

    dsubu t0, v0, __NR_N32_Linux # check syscall number
    - sltiu t0, t0, __NR_N32_Linux_syscalls + 1
    + sltiu t0, t0, __NR_N32_Linux_syscalls

    #ifndef CONFIG_MIPS32_O32
    ld t1, PT_EPC(sp) # skip syscall on return
    @@ -87,7 +87,7 @@ n32_syscall_trace_entry:
    ld a5, PT_R9(sp)

    dsubu t2, v0, __NR_N32_Linux # check (new) syscall number
    - sltiu t0, t2, __NR_N32_Linux_syscalls + 1
    + sltiu t0, t2, __NR_N32_Linux_syscalls
    beqz t0, not_n32_scall

    j syscall_common
    diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
    index 73913f0..eb53d8ea 100644
    --- a/arch/mips/kernel/scall64-o32.S
    +++ b/arch/mips/kernel/scall64-o32.S
    @@ -34,7 +34,7 @@ NESTED(handle_sys, PT_SIZE, sp)
    ld t1, PT_EPC(sp) # skip syscall on return

    dsubu t0, v0, __NR_O32_Linux # check syscall number
    - sltiu t0, t0, __NR_O32_Linux_syscalls + 1
    + sltiu t0, t0, __NR_O32_Linux_syscalls
    daddiu t1, 4 # skip to next instruction
    sd t1, PT_EPC(sp)
    beqz t0, not_o32_scall
    @@ -144,7 +144,7 @@ trace_a_syscall:
    ld a7, PT_R11(sp) # For indirect syscalls

    dsubu t0, v0, __NR_O32_Linux # check (new) syscall number
    - sltiu t0, t0, __NR_O32_Linux_syscalls + 1
    + sltiu t0, t0, __NR_O32_Linux_syscalls
    beqz t0, not_o32_scall

    j syscall_common
    @@ -193,7 +193,7 @@ not_o32_scall:

    LEAF(sys32_syscall)
    subu t0, a0, __NR_O32_Linux # check syscall number
    - sltiu v0, t0, __NR_O32_Linux_syscalls + 1
    + sltiu v0, t0, __NR_O32_Linux_syscalls
    beqz t0, einval # do not recurse
    dsll t1, t0, 3
    beqz v0, einval
    --
    1.9.1
    \
     
     \ /
      Last update: 2018-11-15 07:15    [W:2.975 / U:0.280 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site