merge compat sys_ipc instances
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
44
ipc/compat.c
44
ipc/compat.c
@@ -368,6 +368,50 @@ long compat_sys_msgrcv(int first, int second, int msgtyp, int third,
|
||||
return do_msgrcv(first, uptr, second, msgtyp, third,
|
||||
compat_do_msg_fill);
|
||||
}
|
||||
|
||||
COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second,
|
||||
u32, third, compat_uptr_t, ptr, u32, fifth)
|
||||
{
|
||||
int version;
|
||||
|
||||
version = call >> 16; /* hack for backward compatibility */
|
||||
call &= 0xffff;
|
||||
|
||||
switch (call) {
|
||||
case SEMOP:
|
||||
/* struct sembuf is the same on 32 and 64bit :)) */
|
||||
return sys_semtimedop(first, compat_ptr(ptr), second, NULL);
|
||||
case SEMTIMEDOP:
|
||||
return compat_sys_semtimedop(first, compat_ptr(ptr), second,
|
||||
compat_ptr(fifth));
|
||||
case SEMGET:
|
||||
return sys_semget(first, second, third);
|
||||
case SEMCTL:
|
||||
return compat_sys_semctl(first, second, third, compat_ptr(ptr));
|
||||
|
||||
case MSGSND:
|
||||
return compat_sys_msgsnd(first, second, third, compat_ptr(ptr));
|
||||
case MSGRCV:
|
||||
return compat_sys_msgrcv(first, second, fifth, third,
|
||||
version, compat_ptr(ptr));
|
||||
case MSGGET:
|
||||
return sys_msgget(first, second);
|
||||
case MSGCTL:
|
||||
return compat_sys_msgctl(first, second, compat_ptr(ptr));
|
||||
|
||||
case SHMAT:
|
||||
return compat_sys_shmat(first, second, third, version,
|
||||
compat_ptr(ptr));
|
||||
case SHMDT:
|
||||
return sys_shmdt(compat_ptr(ptr));
|
||||
case SHMGET:
|
||||
return sys_shmget(first, (unsigned)second, third);
|
||||
case SHMCTL:
|
||||
return compat_sys_shmctl(first, second, compat_ptr(ptr));
|
||||
}
|
||||
|
||||
return -ENOSYS;
|
||||
}
|
||||
#else
|
||||
long compat_sys_semctl(int semid, int semnum, int cmd, int arg)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user