aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/mips/kernel/linux32.c16
-rw-r--r--arch/mips/kernel/scall64-n32.S4
2 files changed, 16 insertions, 4 deletions
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index b061c9aa6302..de3fae260ff8 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -440,14 +440,26 @@ sys32_ipc (u32 call, int first, int second, int third, u32 ptr, u32 fifth)
440} 440}
441 441
442#ifdef CONFIG_MIPS32_N32 442#ifdef CONFIG_MIPS32_N32
443asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, union semun arg) 443asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, u32 arg)
444{ 444{
445 /* compat_sys_semctl expects a pointer to union semun */ 445 /* compat_sys_semctl expects a pointer to union semun */
446 u32 __user *uptr = compat_alloc_user_space(sizeof(u32)); 446 u32 __user *uptr = compat_alloc_user_space(sizeof(u32));
447 if (put_user(ptr_to_compat(arg.__pad), uptr)) 447 if (put_user(arg, uptr))
448 return -EFAULT; 448 return -EFAULT;
449 return compat_sys_semctl(semid, semnum, cmd, uptr); 449 return compat_sys_semctl(semid, semnum, cmd, uptr);
450} 450}
451
452asmlinkage long sysn32_msgsnd(int msqid, u32 msgp, unsigned msgsz, int msgflg)
453{
454 return compat_sys_msgsnd(msqid, msgsz, msgflg, compat_ptr(msgp));
455}
456
457asmlinkage long sysn32_msgrcv(int msqid, u32 msgp, size_t msgsz, int msgtyp,
458 int msgflg)
459{
460 return compat_sys_msgrcv(msqid, msgsz, msgtyp, msgflg, IPC_64,
461 compat_ptr(msgp));
462}
451#endif 463#endif
452 464
453struct sysctl_args32 465struct sysctl_args32
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
index 34567d81f940..a7bff2a54723 100644
--- a/arch/mips/kernel/scall64-n32.S
+++ b/arch/mips/kernel/scall64-n32.S
@@ -187,8 +187,8 @@ EXPORT(sysn32_call_table)
187 PTR sysn32_semctl 187 PTR sysn32_semctl
188 PTR sys_shmdt /* 6065 */ 188 PTR sys_shmdt /* 6065 */
189 PTR sys_msgget 189 PTR sys_msgget
190 PTR compat_sys_msgsnd 190 PTR sysn32_msgsnd
191 PTR compat_sys_msgrcv 191 PTR sysn32_msgrcv
192 PTR compat_sys_msgctl 192 PTR compat_sys_msgctl
193 PTR compat_sys_fcntl /* 6070 */ 193 PTR compat_sys_fcntl /* 6070 */
194 PTR sys_flock 194 PTR sys_flock