1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2#ifndef __ASM_GENERIC_IPCBUF_H
3#define __ASM_GENERIC_IPCBUF_H
4
5#include <linux/posix_types.h>
6
7/*
8 * The generic ipc64_perm structure:
9 * Note extra padding because this structure is passed back and forth
10 * between kernel and user space.
11 *
12 * ipc64_perm was originally meant to be architecture specific, but
13 * everyone just ended up making identical copies without specific
14 * optimizations, so we may just as well all use the same one.
15 *
16 * Pad space is left for:
17 * - 32-bit mode_t on architectures that only had 16 bit
18 * - 32-bit seq
19 * - 2 miscellaneous 32-bit values
20 */
21
22struct ipc64_perm {
23	__kernel_key_t		key;
24	__kernel_uid32_t	uid;
25	__kernel_gid32_t	gid;
26	__kernel_uid32_t	cuid;
27	__kernel_gid32_t	cgid;
28	__kernel_mode_t		mode;
29				/* pad if mode_t is u16: */
30	unsigned char		__pad1[4 - sizeof(__kernel_mode_t)];
31	unsigned short		seq;
32	unsigned short		__pad2;
33	__kernel_ulong_t	__unused1;
34	__kernel_ulong_t	__unused2;
35};
36
37#endif /* __ASM_GENERIC_IPCBUF_H */
38