#include <linux/kernel.h>
#include <linux/gfp.h>
#include <linux/fs.h>
#include <linux/types.h>
#include <linux/file.h>
#include <linux/icmpv6.h>
#include <linux/socket.h>
#include <linux/syscalls.h>
#include <linux/filter.h>
#include <linux/compat.h>
#include <linux/security.h>
#include <linux/audit.h>
#include <linux/export.h>
#include <net/scm.h>
#include <net/sock.h>
#include <net/ip.h>
#include <net/ipv6.h>
#include <linux/uaccess.h>
#include <net/compat.h>
int __get_compat_msghdr(struct msghdr *kmsg,
struct compat_msghdr *msg,
struct sockaddr __user **save_addr)
{ … }
int get_compat_msghdr(struct msghdr *kmsg,
struct compat_msghdr __user *umsg,
struct sockaddr __user **save_addr,
struct iovec **iov)
{ … }
#define CMSG_COMPAT_ALIGN(len) …
#define CMSG_COMPAT_DATA(cmsg) …
#define CMSG_COMPAT_SPACE(len) …
#define CMSG_COMPAT_LEN(len) …
#define CMSG_COMPAT_FIRSTHDR(msg) …
#define CMSG_COMPAT_OK(ucmlen, ucmsg, mhdr) …
static inline struct compat_cmsghdr __user *cmsg_compat_nxthdr(struct msghdr *msg,
struct compat_cmsghdr __user *cmsg, int cmsg_len)
{ … }
int cmsghdr_from_user_compat_to_kern(struct msghdr *kmsg, struct sock *sk,
unsigned char *stackbuf, int stackbuf_size)
{ … }
int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *data)
{ … }
static int scm_max_fds_compat(struct msghdr *msg)
{ … }
void scm_detach_fds_compat(struct msghdr *msg, struct scm_cookie *scm)
{ … }
#define AL …
static unsigned char nas[21] = …;
#undef AL
static inline long __compat_sys_sendmsg(int fd,
struct compat_msghdr __user *msg,
unsigned int flags)
{ … }
COMPAT_SYSCALL_DEFINE3(sendmsg, int, fd, struct compat_msghdr __user *, msg,
unsigned int, flags)
{ … }
static inline long __compat_sys_sendmmsg(int fd,
struct compat_mmsghdr __user *mmsg,
unsigned int vlen, unsigned int flags)
{ … }
COMPAT_SYSCALL_DEFINE4(sendmmsg, int, fd, struct compat_mmsghdr __user *, mmsg,
unsigned int, vlen, unsigned int, flags)
{ … }
static inline long __compat_sys_recvmsg(int fd,
struct compat_msghdr __user *msg,
unsigned int flags)
{ … }
COMPAT_SYSCALL_DEFINE3(recvmsg, int, fd, struct compat_msghdr __user *, msg,
unsigned int, flags)
{ … }
static inline long __compat_sys_recvfrom(int fd, void __user *buf,
compat_size_t len, unsigned int flags,
struct sockaddr __user *addr,
int __user *addrlen)
{ … }
COMPAT_SYSCALL_DEFINE4(recv, int, fd, void __user *, buf, compat_size_t, len, unsigned int, flags)
{ … }
COMPAT_SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, buf, compat_size_t, len,
unsigned int, flags, struct sockaddr __user *, addr,
int __user *, addrlen)
{ … }
COMPAT_SYSCALL_DEFINE5(recvmmsg_time64, int, fd, struct compat_mmsghdr __user *, mmsg,
unsigned int, vlen, unsigned int, flags,
struct __kernel_timespec __user *, timeout)
{ … }
#ifdef CONFIG_COMPAT_32BIT_TIME
COMPAT_SYSCALL_DEFINE5(recvmmsg_time32, int, fd, struct compat_mmsghdr __user *, mmsg,
unsigned int, vlen, unsigned int, flags,
struct old_timespec32 __user *, timeout)
{ … }
#endif
COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args)
{ … }