forked from luck/tmp_suning_uos_patched
[MIPS] Fix N32 SysV IPC routines
Add wrappers for N32 msg{snd,rcv}. compat_sys_msg{snd,rcv} can not not be used as system call entries as is. This fix is based on Kaz Kylheku's patch. Also change a type of last argument of sysn32_semctl to match its true size. Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
6b4cd27550
commit
e16d8df0be
@ -440,14 +440,26 @@ sys32_ipc (u32 call, int first, int second, int third, u32 ptr, u32 fifth)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MIPS32_N32
|
||||
asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, union semun arg)
|
||||
asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, u32 arg)
|
||||
{
|
||||
/* compat_sys_semctl expects a pointer to union semun */
|
||||
u32 __user *uptr = compat_alloc_user_space(sizeof(u32));
|
||||
if (put_user(ptr_to_compat(arg.__pad), uptr))
|
||||
if (put_user(arg, uptr))
|
||||
return -EFAULT;
|
||||
return compat_sys_semctl(semid, semnum, cmd, uptr);
|
||||
}
|
||||
|
||||
asmlinkage long sysn32_msgsnd(int msqid, u32 msgp, unsigned msgsz, int msgflg)
|
||||
{
|
||||
return compat_sys_msgsnd(msqid, msgsz, msgflg, compat_ptr(msgp));
|
||||
}
|
||||
|
||||
asmlinkage long sysn32_msgrcv(int msqid, u32 msgp, size_t msgsz, int msgtyp,
|
||||
int msgflg)
|
||||
{
|
||||
return compat_sys_msgrcv(msqid, msgsz, msgtyp, msgflg, IPC_64,
|
||||
compat_ptr(msgp));
|
||||
}
|
||||
#endif
|
||||
|
||||
struct sysctl_args32
|
||||
|
@ -187,8 +187,8 @@ EXPORT(sysn32_call_table)
|
||||
PTR sysn32_semctl
|
||||
PTR sys_shmdt /* 6065 */
|
||||
PTR sys_msgget
|
||||
PTR compat_sys_msgsnd
|
||||
PTR compat_sys_msgrcv
|
||||
PTR sysn32_msgsnd
|
||||
PTR sysn32_msgrcv
|
||||
PTR compat_sys_msgctl
|
||||
PTR compat_sys_fcntl /* 6070 */
|
||||
PTR sys_flock
|
||||
|
Loading…
Reference in New Issue
Block a user