mirror of
https://github.com/genesi/linux-legacy.git
synced 2026-05-20 11:44:14 +00:00
[MIPS] Use SYSVIPC_COMPAT to fix various problems on N32
N32 SysV IPC system calls should use 32-bit compatible code. arch/mips/kernel/linux32.c have similar compatible code for O32, but ipc/compat.c seems more complete. We can use it for both N32 and O32. This patch should fix these problems (and other possible problems): http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=1149188824.6986.6.camel%40diimka-laptop http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=44C6B829.8050508%40caviumnetworks.com Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
committed by
Ralf Baechle
parent
9567772f14
commit
05e4396651
@@ -32,6 +32,7 @@ typedef struct {
|
||||
s32 val[2];
|
||||
} compat_fsid_t;
|
||||
typedef s32 compat_timer_t;
|
||||
typedef s32 compat_key_t;
|
||||
|
||||
typedef s32 compat_int_t;
|
||||
typedef s32 compat_long_t;
|
||||
@@ -146,4 +147,71 @@ static inline void __user *compat_alloc_user_space(long len)
|
||||
return (void __user *) (regs->regs[29] - len);
|
||||
}
|
||||
|
||||
struct compat_ipc64_perm {
|
||||
compat_key_t key;
|
||||
__compat_uid32_t uid;
|
||||
__compat_gid32_t gid;
|
||||
__compat_uid32_t cuid;
|
||||
__compat_gid32_t cgid;
|
||||
compat_mode_t mode;
|
||||
unsigned short seq;
|
||||
unsigned short __pad2;
|
||||
compat_ulong_t __unused1;
|
||||
compat_ulong_t __unused2;
|
||||
};
|
||||
|
||||
struct compat_semid64_ds {
|
||||
struct compat_ipc64_perm sem_perm;
|
||||
compat_time_t sem_otime;
|
||||
compat_time_t sem_ctime;
|
||||
compat_ulong_t sem_nsems;
|
||||
compat_ulong_t __unused1;
|
||||
compat_ulong_t __unused2;
|
||||
};
|
||||
|
||||
struct compat_msqid64_ds {
|
||||
struct compat_ipc64_perm msg_perm;
|
||||
#ifndef CONFIG_CPU_LITTLE_ENDIAN
|
||||
compat_ulong_t __unused1;
|
||||
#endif
|
||||
compat_time_t msg_stime;
|
||||
#ifdef CONFIG_CPU_LITTLE_ENDIAN
|
||||
compat_ulong_t __unused1;
|
||||
#endif
|
||||
#ifndef CONFIG_CPU_LITTLE_ENDIAN
|
||||
compat_ulong_t __unused2;
|
||||
#endif
|
||||
compat_time_t msg_rtime;
|
||||
#ifdef CONFIG_CPU_LITTLE_ENDIAN
|
||||
compat_ulong_t __unused2;
|
||||
#endif
|
||||
#ifndef CONFIG_CPU_LITTLE_ENDIAN
|
||||
compat_ulong_t __unused3;
|
||||
#endif
|
||||
compat_time_t msg_ctime;
|
||||
#ifdef CONFIG_CPU_LITTLE_ENDIAN
|
||||
compat_ulong_t __unused3;
|
||||
#endif
|
||||
compat_ulong_t msg_cbytes;
|
||||
compat_ulong_t msg_qnum;
|
||||
compat_ulong_t msg_qbytes;
|
||||
compat_pid_t msg_lspid;
|
||||
compat_pid_t msg_lrpid;
|
||||
compat_ulong_t __unused4;
|
||||
compat_ulong_t __unused5;
|
||||
};
|
||||
|
||||
struct compat_shmid64_ds {
|
||||
struct compat_ipc64_perm shm_perm;
|
||||
compat_size_t shm_segsz;
|
||||
compat_time_t shm_atime;
|
||||
compat_time_t shm_dtime;
|
||||
compat_time_t shm_ctime;
|
||||
compat_pid_t shm_cpid;
|
||||
compat_pid_t shm_lpid;
|
||||
compat_ulong_t shm_nattch;
|
||||
compat_ulong_t __unused1;
|
||||
compat_ulong_t __unused2;
|
||||
};
|
||||
|
||||
#endif /* _ASM_COMPAT_H */
|
||||
|
||||
Reference in New Issue
Block a user