mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-10 23:29:46 +00:00
[SPARC]: Fix robust futex syscalls and wire up migrate_pages.
When I added the entries for the robust futex syscall entries, I forgot to bump NR_SYSCALLS. The current situation is error-prone because NR_SYSCALLS lives in entry.S where the system call limit checks are enforced. Move the definition to asm/unistd.h in order to make this mistake much more difficult to make. And wire up sys_migrate_pages since the powerpc folks implemented the compat wrapper for us. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
10b1fbdb0a
commit
59359ff877
@ -32,13 +32,12 @@
|
|||||||
#include <asm/mxcc.h>
|
#include <asm/mxcc.h>
|
||||||
#include <asm/thread_info.h>
|
#include <asm/thread_info.h>
|
||||||
#include <asm/param.h>
|
#include <asm/param.h>
|
||||||
|
#include <asm/unistd.h>
|
||||||
|
|
||||||
#include <asm/asmmacro.h>
|
#include <asm/asmmacro.h>
|
||||||
|
|
||||||
#define curptr g6
|
#define curptr g6
|
||||||
|
|
||||||
#define NR_SYSCALLS 300 /* Each OS is different... */
|
|
||||||
|
|
||||||
/* These are just handy. */
|
/* These are just handy. */
|
||||||
#define _SV save %sp, -STACKFRAME_SZ, %sp
|
#define _SV save %sp, -STACKFRAME_SZ, %sp
|
||||||
#define _RS restore
|
#define _RS restore
|
||||||
|
@ -78,7 +78,7 @@ sys_call_table:
|
|||||||
/*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64
|
/*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64
|
||||||
/*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
|
/*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
|
||||||
/*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
|
/*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
|
||||||
/*300*/ .long sys_set_robust_list, sys_get_robust_list
|
/*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages
|
||||||
|
|
||||||
#ifdef CONFIG_SUNOS_EMUL
|
#ifdef CONFIG_SUNOS_EMUL
|
||||||
/* Now the SunOS syscall table. */
|
/* Now the SunOS syscall table. */
|
||||||
@ -190,6 +190,7 @@ sunos_sys_table:
|
|||||||
/*290*/ .long sunos_nosys, sunos_nosys, sunos_nosys
|
/*290*/ .long sunos_nosys, sunos_nosys, sunos_nosys
|
||||||
.long sunos_nosys, sunos_nosys, sunos_nosys
|
.long sunos_nosys, sunos_nosys, sunos_nosys
|
||||||
.long sunos_nosys, sunos_nosys, sunos_nosys
|
.long sunos_nosys, sunos_nosys, sunos_nosys
|
||||||
.long sunos_nosys, sunos_nosys, sunos_nosys
|
.long sunos_nosys
|
||||||
|
/*300*/ .long sunos_nosys, sunos_nosys, sunos_nosys
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -22,11 +22,10 @@
|
|||||||
#include <asm/auxio.h>
|
#include <asm/auxio.h>
|
||||||
#include <asm/sfafsr.h>
|
#include <asm/sfafsr.h>
|
||||||
#include <asm/pil.h>
|
#include <asm/pil.h>
|
||||||
|
#include <asm/unistd.h>
|
||||||
|
|
||||||
#define curptr g6
|
#define curptr g6
|
||||||
|
|
||||||
#define NR_SYSCALLS 300 /* Each OS is different... */
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 32
|
.align 32
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ sys_call_table32:
|
|||||||
.word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64
|
.word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64
|
||||||
/*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
|
/*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
|
||||||
.word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare
|
.word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare
|
||||||
/*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list
|
/*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages
|
||||||
|
|
||||||
#endif /* CONFIG_COMPAT */
|
#endif /* CONFIG_COMPAT */
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ sys_call_table:
|
|||||||
.word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64
|
.word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64
|
||||||
/*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
|
/*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
|
||||||
.word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
|
.word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
|
||||||
/*300*/ .word sys_set_robust_list, sys_get_robust_list
|
/*300*/ .word sys_set_robust_list, sys_get_robust_list, sys_migrate_pages
|
||||||
|
|
||||||
#if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \
|
#if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \
|
||||||
defined(CONFIG_SOLARIS_EMUL_MODULE)
|
defined(CONFIG_SOLARIS_EMUL_MODULE)
|
||||||
@ -262,5 +262,7 @@ sunos_sys_table:
|
|||||||
/*290*/ .word sunos_nosys, sunos_nosys, sunos_nosys
|
/*290*/ .word sunos_nosys, sunos_nosys, sunos_nosys
|
||||||
.word sunos_nosys, sunos_nosys, sunos_nosys
|
.word sunos_nosys, sunos_nosys, sunos_nosys
|
||||||
.word sunos_nosys, sunos_nosys, sunos_nosys
|
.word sunos_nosys, sunos_nosys, sunos_nosys
|
||||||
.word sunos_nosys, sunos_nosys, sunos_nosys
|
.word sunos_nosys
|
||||||
|
/*300*/ .word sunos_nosys, sunos_nosys, sunos_nosys
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -318,12 +318,15 @@
|
|||||||
#define __NR_unshare 299
|
#define __NR_unshare 299
|
||||||
#define __NR_set_robust_list 300
|
#define __NR_set_robust_list 300
|
||||||
#define __NR_get_robust_list 301
|
#define __NR_get_robust_list 301
|
||||||
|
#define __NR_migrate_pages 302
|
||||||
|
|
||||||
|
#define NR_SYSCALLS 303
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
/* WARNING: You MAY NOT add syscall numbers larger than 301, since
|
/* WARNING: You MAY NOT add syscall numbers larger than 302, since
|
||||||
* all of the syscall tables in the Sparc kernel are
|
* all of the syscall tables in the Sparc kernel are
|
||||||
* sized to have 301 entries (starting at zero). Therefore
|
* sized to have 302 entries (starting at zero). Therefore
|
||||||
* find a free slot in the 0-301 range.
|
* find a free slot in the 0-302 range.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _syscall0(type,name) \
|
#define _syscall0(type,name) \
|
||||||
|
@ -320,12 +320,16 @@
|
|||||||
#define __NR_unshare 299
|
#define __NR_unshare 299
|
||||||
#define __NR_set_robust_list 300
|
#define __NR_set_robust_list 300
|
||||||
#define __NR_get_robust_list 301
|
#define __NR_get_robust_list 301
|
||||||
|
#define __NR_migrate_pages 302
|
||||||
|
|
||||||
|
#define NR_SYSCALLS 303
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
/* WARNING: You MAY NOT add syscall numbers larger than 301, since
|
|
||||||
|
/* WARNING: You MAY NOT add syscall numbers larger than 302, since
|
||||||
* all of the syscall tables in the Sparc kernel are
|
* all of the syscall tables in the Sparc kernel are
|
||||||
* sized to have 301 entries (starting at zero). Therefore
|
* sized to have 302 entries (starting at zero). Therefore
|
||||||
* find a free slot in the 0-301 range.
|
* find a free slot in the 0-302 range.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _syscall0(type,name) \
|
#define _syscall0(type,name) \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user