Hi, David, After some code reading, I have some understanding about compat syscall, please tell me whether I'm correct. 1, compat syscall is only needed by n32/o32 userspace on 64-bit kernel. 2, compat syscall is only needed when there are arguments in pointer type. 3, compat syscall is only needed when pointer arguments are array/struct/union for reading (reading means get_user or copy_from_user), or pointer arguments are array/struct/union/long integer for writing (writing means put_user or copy_to_user). If my understanding is correct, then in this patch, get_mempolicy() need to use the compat version for n32/o32 on 64-bit kernel, mbind() and set_mempolicy() can use the normal version in all cases. But when I reading the X86 code, it seems like only o32 on 64-bit kernel need a compat version (I assume i386/X32/X64 on X86 is the same as o32/n32/n64 on MIPS). Please give some information, thanks. Huacai On Sat, Apr 5, 2014 at 8:54 AM, "陈华才" <chenhc@xxxxxxxxxx> wrote: > Excuse me, what's the compat version exactly means? Or how to produce a > problem without a compat version? It seems everything works fine just > with this patch. > > Huacai > >> On 04/04/2014 01:11 AM, Huacai Chen wrote: >>> Enable sys_mbind()/sys_get_mempolicy()/sys_set_mempolicy() for O32, N32, >>> and N64 ABIs. >>> >>> Signed-off-by: Huacai Chen <chenhc@xxxxxxxxxx> >> >> NACK. >> >> You need compat versions of the syscalls... >> >> Also current migrate_pages and move_pages syscalls need to use the >> compat wrappers for 32-bit ABIs. >> >> David Daney >> >> >>> --- >>> arch/mips/kernel/scall32-o32.S | 4 ++-- >>> arch/mips/kernel/scall64-64.S | 4 ++-- >>> arch/mips/kernel/scall64-n32.S | 6 +++--- >>> arch/mips/kernel/scall64-o32.S | 6 +++--- >>> 4 files changed, 10 insertions(+), 10 deletions(-) >>> >>> diff --git a/arch/mips/kernel/scall32-o32.S >>> b/arch/mips/kernel/scall32-o32.S >>> index fdc70b4..7f7e2fb 100644 >>> --- a/arch/mips/kernel/scall32-o32.S >>> +++ b/arch/mips/kernel/scall32-o32.S >>> @@ -495,8 +495,8 @@ EXPORT(sys_call_table) >>> PTR sys_tgkill >>> PTR sys_utimes >>> PTR sys_mbind >>> - PTR sys_ni_syscall /* sys_get_mempolicy */ >>> - PTR sys_ni_syscall /* 4270 sys_set_mempolicy */ >>> + PTR sys_get_mempolicy >>> + PTR sys_set_mempolicy /* 4270 */ >>> PTR sys_mq_open >>> PTR sys_mq_unlink >>> PTR sys_mq_timedsend >>> diff --git a/arch/mips/kernel/scall64-64.S >>> b/arch/mips/kernel/scall64-64.S >>> index dd99c328..a4baf06 100644 >>> --- a/arch/mips/kernel/scall64-64.S >>> +++ b/arch/mips/kernel/scall64-64.S >>> @@ -347,8 +347,8 @@ EXPORT(sys_call_table) >>> PTR sys_tgkill /* 5225 */ >>> PTR sys_utimes >>> PTR sys_mbind >>> - PTR sys_ni_syscall /* sys_get_mempolicy */ >>> - PTR sys_ni_syscall /* sys_set_mempolicy */ >>> + PTR sys_get_mempolicy >>> + PTR sys_set_mempolicy >>> PTR sys_mq_open /* 5230 */ >>> PTR sys_mq_unlink >>> PTR sys_mq_timedsend >>> diff --git a/arch/mips/kernel/scall64-n32.S >>> b/arch/mips/kernel/scall64-n32.S >>> index f68d2f4..92db19e 100644 >>> --- a/arch/mips/kernel/scall64-n32.S >>> +++ b/arch/mips/kernel/scall64-n32.S >>> @@ -339,9 +339,9 @@ EXPORT(sysn32_call_table) >>> PTR compat_sys_clock_nanosleep >>> PTR sys_tgkill >>> PTR compat_sys_utimes /* 6230 */ >>> - PTR sys_ni_syscall /* sys_mbind */ >>> - PTR sys_ni_syscall /* sys_get_mempolicy */ >>> - PTR sys_ni_syscall /* sys_set_mempolicy */ >>> + PTR sys_mbind >>> + PTR sys_get_mempolicy >>> + PTR sys_set_mempolicy >> >> Here >> >> >>> PTR compat_sys_mq_open >>> PTR sys_mq_unlink /* 6235 */ >>> PTR compat_sys_mq_timedsend >>> diff --git a/arch/mips/kernel/scall64-o32.S >>> b/arch/mips/kernel/scall64-o32.S >>> index 70f6ace..0230429 100644 >>> --- a/arch/mips/kernel/scall64-o32.S >>> +++ b/arch/mips/kernel/scall64-o32.S >>> @@ -473,9 +473,9 @@ EXPORT(sys32_call_table) >>> PTR compat_sys_clock_nanosleep /* 4265 */ >>> PTR sys_tgkill >>> PTR compat_sys_utimes >>> - PTR sys_ni_syscall /* sys_mbind */ >>> - PTR sys_ni_syscall /* sys_get_mempolicy */ >>> - PTR sys_ni_syscall /* 4270 sys_set_mempolicy */ >>> + PTR sys_mbind >>> + PTR sys_get_mempolicy >>> + PTR sys_set_mempolicy /* 4270 */ >> >> And Here. >> >> >>> PTR compat_sys_mq_open >>> PTR sys_mq_unlink >>> PTR compat_sys_mq_timedsend >>> >> >> > > >