diff mbox series

[v2,2/5] mips: add +1 to __NR_syscalls in uapi header

Message ID 1542262461-29024-3-git-send-email-firoz.khan@linaro.org
State New
Headers show
Series mips: system call table generation support | expand

Commit Message

Firoz Khan Nov. 15, 2018, 6:14 a.m. UTC
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(-)

-- 
1.9.1

Comments

Arnd Bergmann Nov. 19, 2018, 3:57 p.m. UTC | #1
On Thu, Nov 15, 2018 at 7:15 AM Firoz Khan <firoz.khan@linaro.org> wrote:
>

> 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>


The patch looks correct to me, and is a nice cleanup, but I found a
couple of things remaining that could be done slightly better.

> 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


I suppose these can simply get removed, there are no users of NR_syscalls
in MIPS kernels.

> 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


Here I would drop the '-1' and instead replace the '<=' with '<' for
better readability

> 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


This is also unused as of commit 2957c9e61ee9 ("[MIPS] IRIX: Goodbye and
thanks for all the fish"), eight years ago, so I'd remove this as well.

I'd suggest doing one patch for the removal of the unused macros, and another
patch for the other changes.

       Arnd
diff mbox series

Patch

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