summaryrefslogtreecommitdiffstats
path: root/ipc/util.h
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2017-07-09 04:52:47 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2017-07-16 02:46:42 +0200
commit553f770ef71b27ee053bd241bef0998a15f43467 (patch)
treeb23887b5e7d6ce16c9bc0627f26748e500ad5177 /ipc/util.h
parentshmctl: split the work from copyin/copyout (diff)
downloadlinux-553f770ef71b27ee053bd241bef0998a15f43467.tar.xz
linux-553f770ef71b27ee053bd241bef0998a15f43467.zip
ipc: move compat shmctl to native
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'ipc/util.h')
-rw-r--r--ipc/util.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/ipc/util.h b/ipc/util.h
index c692010e6f0a..3a3dfe137bee 100644
--- a/ipc/util.h
+++ b/ipc/util.h
@@ -191,4 +191,28 @@ int ipcget(struct ipc_namespace *ns, struct ipc_ids *ids,
const struct ipc_ops *ops, struct ipc_params *params);
void free_ipcs(struct ipc_namespace *ns, struct ipc_ids *ids,
void (*free)(struct ipc_namespace *, struct kern_ipc_perm *));
+
+#ifdef CONFIG_COMPAT
+#include <linux/compat.h>
+struct compat_ipc_perm {
+ key_t key;
+ __compat_uid_t uid;
+ __compat_gid_t gid;
+ __compat_uid_t cuid;
+ __compat_gid_t cgid;
+ compat_mode_t mode;
+ unsigned short seq;
+};
+
+static inline int compat_ipc_parse_version(int *cmd)
+{
+#ifdef CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION
+ int version = *cmd & IPC_64;
+ *cmd &= ~IPC_64;
+ return version;
+#else
+ return IPC_64;
+#endif
+}
+#endif
#endif