提交 543d9cfe 编写于 作者: A Arnaldo Carvalho de Melo 提交者: David S. Miller

[NET]: Identation & other cleanups related to compat_[gs]etsockopt cset

No code changes, just tidying up, in some cases moving EXPORT_SYMBOLs
to just after the function exported, etc.
Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 f94691ac
...@@ -1386,14 +1386,14 @@ int sock_common_getsockopt(struct socket *sock, int level, int optname, ...@@ -1386,14 +1386,14 @@ int sock_common_getsockopt(struct socket *sock, int level, int optname,
EXPORT_SYMBOL(sock_common_getsockopt); EXPORT_SYMBOL(sock_common_getsockopt);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_sock_common_getsockopt(struct socket *sock, int level, int compat_sock_common_getsockopt(struct socket *sock, int level, int optname,
int optname, char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
struct sock *sk = sock->sk; struct sock *sk = sock->sk;
if (sk->sk_prot->compat_setsockopt) if (sk->sk_prot->compat_setsockopt != NULL)
return sk->sk_prot->compat_getsockopt(sk, level, return sk->sk_prot->compat_getsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
return sk->sk_prot->getsockopt(sk, level, optname, optval, optlen); return sk->sk_prot->getsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL(compat_sock_common_getsockopt); EXPORT_SYMBOL(compat_sock_common_getsockopt);
...@@ -1429,14 +1429,14 @@ int sock_common_setsockopt(struct socket *sock, int level, int optname, ...@@ -1429,14 +1429,14 @@ int sock_common_setsockopt(struct socket *sock, int level, int optname,
EXPORT_SYMBOL(sock_common_setsockopt); EXPORT_SYMBOL(sock_common_setsockopt);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_sock_common_setsockopt(struct socket *sock, int compat_sock_common_setsockopt(struct socket *sock, int level, int optname,
int level, int optname, char __user *optval, int optlen) char __user *optval, int optlen)
{ {
struct sock *sk = sock->sk; struct sock *sk = sock->sk;
if (sk->sk_prot->compat_setsockopt) if (sk->sk_prot->compat_setsockopt != NULL)
return sk->sk_prot->compat_setsockopt(sk, level, return sk->sk_prot->compat_setsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
return sk->sk_prot->setsockopt(sk, level, optname, optval, optlen); return sk->sk_prot->setsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL(compat_sock_common_setsockopt); EXPORT_SYMBOL(compat_sock_common_setsockopt);
......
...@@ -994,12 +994,12 @@ static struct inet_connection_sock_af_ops dccp_ipv4_af_ops = { ...@@ -994,12 +994,12 @@ static struct inet_connection_sock_af_ops dccp_ipv4_af_ops = {
.net_header_len = sizeof(struct iphdr), .net_header_len = sizeof(struct iphdr),
.setsockopt = ip_setsockopt, .setsockopt = ip_setsockopt,
.getsockopt = ip_getsockopt, .getsockopt = ip_getsockopt,
.addr2sockaddr = inet_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ip_setsockopt, .compat_setsockopt = compat_ip_setsockopt,
.compat_getsockopt = compat_ip_getsockopt, .compat_getsockopt = compat_ip_getsockopt,
#endif #endif
.addr2sockaddr = inet_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in),
}; };
static int dccp_v4_init_sock(struct sock *sk) static int dccp_v4_init_sock(struct sock *sk)
...@@ -1044,10 +1044,6 @@ static struct proto dccp_v4_prot = { ...@@ -1044,10 +1044,6 @@ static struct proto dccp_v4_prot = {
.init = dccp_v4_init_sock, .init = dccp_v4_init_sock,
.setsockopt = dccp_setsockopt, .setsockopt = dccp_setsockopt,
.getsockopt = dccp_getsockopt, .getsockopt = dccp_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_dccp_setsockopt,
.compat_getsockopt = compat_dccp_getsockopt,
#endif
.sendmsg = dccp_sendmsg, .sendmsg = dccp_sendmsg,
.recvmsg = dccp_recvmsg, .recvmsg = dccp_recvmsg,
.backlog_rcv = dccp_v4_do_rcv, .backlog_rcv = dccp_v4_do_rcv,
...@@ -1062,6 +1058,10 @@ static struct proto dccp_v4_prot = { ...@@ -1062,6 +1058,10 @@ static struct proto dccp_v4_prot = {
.obj_size = sizeof(struct dccp_sock), .obj_size = sizeof(struct dccp_sock),
.rsk_prot = &dccp_request_sock_ops, .rsk_prot = &dccp_request_sock_ops,
.twsk_prot = &dccp_timewait_sock_ops, .twsk_prot = &dccp_timewait_sock_ops,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_dccp_setsockopt,
.compat_getsockopt = compat_dccp_getsockopt,
#endif
}; };
static struct net_protocol dccp_v4_protocol = { static struct net_protocol dccp_v4_protocol = {
...@@ -1087,14 +1087,14 @@ static const struct proto_ops inet_dccp_ops = { ...@@ -1087,14 +1087,14 @@ static const struct proto_ops inet_dccp_ops = {
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
.sendmsg = inet_sendmsg, .sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg, .recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap, .mmap = sock_no_mmap,
.sendpage = sock_no_sendpage, .sendpage = sock_no_sendpage,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
}; };
static struct inet_protosw dccp_v4_protosw = { static struct inet_protosw dccp_v4_protosw = {
......
...@@ -1114,12 +1114,12 @@ static struct inet_connection_sock_af_ops dccp_ipv6_af_ops = { ...@@ -1114,12 +1114,12 @@ static struct inet_connection_sock_af_ops dccp_ipv6_af_ops = {
.net_header_len = sizeof(struct ipv6hdr), .net_header_len = sizeof(struct ipv6hdr),
.setsockopt = ipv6_setsockopt, .setsockopt = ipv6_setsockopt,
.getsockopt = ipv6_getsockopt, .getsockopt = ipv6_getsockopt,
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt, .compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt, .compat_getsockopt = compat_ipv6_getsockopt,
#endif #endif
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6)
}; };
/* /*
...@@ -1134,12 +1134,12 @@ static struct inet_connection_sock_af_ops dccp_ipv6_mapped = { ...@@ -1134,12 +1134,12 @@ static struct inet_connection_sock_af_ops dccp_ipv6_mapped = {
.net_header_len = sizeof(struct iphdr), .net_header_len = sizeof(struct iphdr),
.setsockopt = ipv6_setsockopt, .setsockopt = ipv6_setsockopt,
.getsockopt = ipv6_getsockopt, .getsockopt = ipv6_getsockopt,
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt, .compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt, .compat_getsockopt = compat_ipv6_getsockopt,
#endif #endif
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6)
}; };
/* NOTE: A lot of things set to zero explicitly by call to /* NOTE: A lot of things set to zero explicitly by call to
...@@ -1175,10 +1175,6 @@ static struct proto dccp_v6_prot = { ...@@ -1175,10 +1175,6 @@ static struct proto dccp_v6_prot = {
.init = dccp_v6_init_sock, .init = dccp_v6_init_sock,
.setsockopt = dccp_setsockopt, .setsockopt = dccp_setsockopt,
.getsockopt = dccp_getsockopt, .getsockopt = dccp_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_dccp_setsockopt,
.compat_getsockopt = compat_dccp_getsockopt,
#endif
.sendmsg = dccp_sendmsg, .sendmsg = dccp_sendmsg,
.recvmsg = dccp_recvmsg, .recvmsg = dccp_recvmsg,
.backlog_rcv = dccp_v6_do_rcv, .backlog_rcv = dccp_v6_do_rcv,
...@@ -1193,6 +1189,10 @@ static struct proto dccp_v6_prot = { ...@@ -1193,6 +1189,10 @@ static struct proto dccp_v6_prot = {
.obj_size = sizeof(struct dccp6_sock), .obj_size = sizeof(struct dccp6_sock),
.rsk_prot = &dccp6_request_sock_ops, .rsk_prot = &dccp6_request_sock_ops,
.twsk_prot = &dccp6_timewait_sock_ops, .twsk_prot = &dccp6_timewait_sock_ops,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_dccp_setsockopt,
.compat_getsockopt = compat_dccp_getsockopt,
#endif
}; };
static struct inet6_protocol dccp_v6_protocol = { static struct inet6_protocol dccp_v6_protocol = {
...@@ -1216,14 +1216,14 @@ static struct proto_ops inet6_dccp_ops = { ...@@ -1216,14 +1216,14 @@ static struct proto_ops inet6_dccp_ops = {
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
.sendmsg = inet_sendmsg, .sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg, .recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap, .mmap = sock_no_mmap,
.sendpage = sock_no_sendpage, .sendpage = sock_no_sendpage,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
}; };
static struct inet_protosw dccp_v6_protosw = { static struct inet_protosw dccp_v6_protosw = {
......
...@@ -516,6 +516,7 @@ int dccp_setsockopt(struct sock *sk, int level, int optname, ...@@ -516,6 +516,7 @@ int dccp_setsockopt(struct sock *sk, int level, int optname,
optlen); optlen);
return do_dccp_setsockopt(sk, level, optname, optval, optlen); return do_dccp_setsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL_GPL(dccp_setsockopt); EXPORT_SYMBOL_GPL(dccp_setsockopt);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
...@@ -525,9 +526,9 @@ int compat_dccp_setsockopt(struct sock *sk, int level, int optname, ...@@ -525,9 +526,9 @@ int compat_dccp_setsockopt(struct sock *sk, int level, int optname,
if (level != SOL_DCCP) if (level != SOL_DCCP)
return inet_csk_compat_setsockopt(sk, level, optname, return inet_csk_compat_setsockopt(sk, level, optname,
optval, optlen); optval, optlen);
return do_dccp_setsockopt(sk, level, optname, optval, optlen); return do_dccp_setsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL_GPL(compat_dccp_setsockopt); EXPORT_SYMBOL_GPL(compat_dccp_setsockopt);
#endif #endif
...@@ -609,6 +610,7 @@ int dccp_getsockopt(struct sock *sk, int level, int optname, ...@@ -609,6 +610,7 @@ int dccp_getsockopt(struct sock *sk, int level, int optname,
optlen); optlen);
return do_dccp_getsockopt(sk, level, optname, optval, optlen); return do_dccp_getsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL_GPL(dccp_getsockopt); EXPORT_SYMBOL_GPL(dccp_getsockopt);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
...@@ -620,6 +622,7 @@ int compat_dccp_getsockopt(struct sock *sk, int level, int optname, ...@@ -620,6 +622,7 @@ int compat_dccp_getsockopt(struct sock *sk, int level, int optname,
optval, optlen); optval, optlen);
return do_dccp_getsockopt(sk, level, optname, optval, optlen); return do_dccp_getsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL_GPL(compat_dccp_getsockopt); EXPORT_SYMBOL_GPL(compat_dccp_getsockopt);
#endif #endif
......
...@@ -802,14 +802,14 @@ const struct proto_ops inet_stream_ops = { ...@@ -802,14 +802,14 @@ const struct proto_ops inet_stream_ops = {
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = tcp_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = tcp_sendpage
}; };
const struct proto_ops inet_dgram_ops = { const struct proto_ops inet_dgram_ops = {
...@@ -827,14 +827,14 @@ const struct proto_ops inet_dgram_ops = { ...@@ -827,14 +827,14 @@ const struct proto_ops inet_dgram_ops = {
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
.sendmsg = inet_sendmsg, .sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg, .recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap, .mmap = sock_no_mmap,
.sendpage = inet_sendpage, .sendpage = inet_sendpage,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
}; };
/* /*
...@@ -856,14 +856,14 @@ static const struct proto_ops inet_sockraw_ops = { ...@@ -856,14 +856,14 @@ static const struct proto_ops inet_sockraw_ops = {
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
.sendmsg = inet_sendmsg, .sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg, .recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap, .mmap = sock_no_mmap,
.sendpage = inet_sendpage, .sendpage = inet_sendpage,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
}; };
static struct net_proto_family inet_family_ops = { static struct net_proto_family inet_family_ops = {
......
...@@ -910,8 +910,8 @@ int ip_setsockopt(struct sock *sk, int level, ...@@ -910,8 +910,8 @@ int ip_setsockopt(struct sock *sk, int level,
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_ip_setsockopt(struct sock *sk, int level, int compat_ip_setsockopt(struct sock *sk, int level, int optname,
int optname, char __user *optval, int optlen) char __user *optval, int optlen)
{ {
int err; int err;
...@@ -928,13 +928,15 @@ int compat_ip_setsockopt(struct sock *sk, int level, ...@@ -928,13 +928,15 @@ int compat_ip_setsockopt(struct sock *sk, int level,
#endif #endif
) { ) {
lock_sock(sk); lock_sock(sk);
err = compat_nf_setsockopt(sk, PF_INET, err = compat_nf_setsockopt(sk, PF_INET, optname,
optname, optval, optlen); optval, optlen);
release_sock(sk); release_sock(sk);
} }
#endif #endif
return err; return err;
} }
EXPORT_SYMBOL(compat_ip_setsockopt);
#endif #endif
/* /*
...@@ -1180,12 +1182,10 @@ int ip_getsockopt(struct sock *sk, int level, ...@@ -1180,12 +1182,10 @@ int ip_getsockopt(struct sock *sk, int level,
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_ip_getsockopt(struct sock *sk, int level, int compat_ip_getsockopt(struct sock *sk, int level, int optname,
int optname, char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
int err; int err = do_ip_getsockopt(sk, level, optname, optval, optlen);
err = do_ip_getsockopt(sk, level, optname, optval, optlen);
#ifdef CONFIG_NETFILTER #ifdef CONFIG_NETFILTER
/* we need to exclude all possible ENOPROTOOPTs except default case */ /* we need to exclude all possible ENOPROTOOPTs except default case */
if (err == -ENOPROTOOPT && optname != IP_PKTOPTIONS if (err == -ENOPROTOOPT && optname != IP_PKTOPTIONS
...@@ -1195,12 +1195,11 @@ int compat_ip_getsockopt(struct sock *sk, int level, ...@@ -1195,12 +1195,11 @@ int compat_ip_getsockopt(struct sock *sk, int level,
) { ) {
int len; int len;
if(get_user(len,optlen)) if (get_user(len, optlen))
return -EFAULT; return -EFAULT;
lock_sock(sk); lock_sock(sk);
err = compat_nf_getsockopt(sk, PF_INET, err = compat_nf_getsockopt(sk, PF_INET, optname, optval, &len);
optname, optval, &len);
release_sock(sk); release_sock(sk);
if (err >= 0) if (err >= 0)
err = put_user(len, optlen); err = put_user(len, optlen);
...@@ -1209,13 +1208,11 @@ int compat_ip_getsockopt(struct sock *sk, int level, ...@@ -1209,13 +1208,11 @@ int compat_ip_getsockopt(struct sock *sk, int level,
#endif #endif
return err; return err;
} }
EXPORT_SYMBOL(compat_ip_getsockopt);
#endif #endif
EXPORT_SYMBOL(ip_cmsg_recv); EXPORT_SYMBOL(ip_cmsg_recv);
EXPORT_SYMBOL(ip_getsockopt); EXPORT_SYMBOL(ip_getsockopt);
EXPORT_SYMBOL(ip_setsockopt); EXPORT_SYMBOL(ip_setsockopt);
#ifdef CONFIG_COMPAT
EXPORT_SYMBOL(compat_ip_getsockopt);
EXPORT_SYMBOL(compat_ip_setsockopt);
#endif
...@@ -685,8 +685,7 @@ static int compat_raw_setsockopt(struct sock *sk, int level, int optname, ...@@ -685,8 +685,7 @@ static int compat_raw_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen) char __user *optval, int optlen)
{ {
if (level != SOL_RAW) if (level != SOL_RAW)
return compat_ip_setsockopt(sk, level, return compat_ip_setsockopt(sk, level, optname, optval, optlen);
optname, optval, optlen);
return do_raw_setsockopt(sk, level, optname, optval, optlen); return do_raw_setsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -716,8 +715,7 @@ static int compat_raw_getsockopt(struct sock *sk, int level, int optname, ...@@ -716,8 +715,7 @@ static int compat_raw_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
if (level != SOL_RAW) if (level != SOL_RAW)
return compat_ip_getsockopt(sk, level, return compat_ip_getsockopt(sk, level, optname, optval, optlen);
optname, optval, optlen);
return do_raw_getsockopt(sk, level, optname, optval, optlen); return do_raw_getsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -760,10 +758,6 @@ struct proto raw_prot = { ...@@ -760,10 +758,6 @@ struct proto raw_prot = {
.init = raw_init, .init = raw_init,
.setsockopt = raw_setsockopt, .setsockopt = raw_setsockopt,
.getsockopt = raw_getsockopt, .getsockopt = raw_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_raw_setsockopt,
.compat_getsockopt = compat_raw_getsockopt,
#endif
.sendmsg = raw_sendmsg, .sendmsg = raw_sendmsg,
.recvmsg = raw_recvmsg, .recvmsg = raw_recvmsg,
.bind = raw_bind, .bind = raw_bind,
...@@ -771,6 +765,10 @@ struct proto raw_prot = { ...@@ -771,6 +765,10 @@ struct proto raw_prot = {
.hash = raw_v4_hash, .hash = raw_v4_hash,
.unhash = raw_v4_unhash, .unhash = raw_v4_unhash,
.obj_size = sizeof(struct raw_sock), .obj_size = sizeof(struct raw_sock),
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_raw_setsockopt,
.compat_getsockopt = compat_raw_getsockopt,
#endif
}; };
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
......
...@@ -1879,14 +1879,16 @@ int tcp_setsockopt(struct sock *sk, int level, int optname, char __user *optval, ...@@ -1879,14 +1879,16 @@ int tcp_setsockopt(struct sock *sk, int level, int optname, char __user *optval,
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_tcp_setsockopt(struct sock *sk, int level, int compat_tcp_setsockopt(struct sock *sk, int level, int optname,
int optname, char __user *optval, int optlen) char __user *optval, int optlen)
{ {
if (level != SOL_TCP) if (level != SOL_TCP)
return inet_csk_compat_setsockopt(sk, level, optname, return inet_csk_compat_setsockopt(sk, level, optname,
optval, optlen); optval, optlen);
return do_tcp_setsockopt(sk, level, optname, optval, optlen); return do_tcp_setsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL(compat_tcp_setsockopt);
#endif #endif
/* Return information about state of tcp endpoint in API format. */ /* Return information about state of tcp endpoint in API format. */
...@@ -2051,14 +2053,16 @@ int tcp_getsockopt(struct sock *sk, int level, int optname, char __user *optval, ...@@ -2051,14 +2053,16 @@ int tcp_getsockopt(struct sock *sk, int level, int optname, char __user *optval,
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_tcp_getsockopt(struct sock *sk, int level, int compat_tcp_getsockopt(struct sock *sk, int level, int optname,
int optname, char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
if (level != SOL_TCP) if (level != SOL_TCP)
return inet_csk_compat_getsockopt(sk, level, optname, return inet_csk_compat_getsockopt(sk, level, optname,
optval, optlen); optval, optlen);
return do_tcp_getsockopt(sk, level, optname, optval, optlen); return do_tcp_getsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL(compat_tcp_getsockopt);
#endif #endif
extern void __skb_cb_too_small_for_tcp(int, int); extern void __skb_cb_too_small_for_tcp(int, int);
...@@ -2177,7 +2181,3 @@ EXPORT_SYMBOL(tcp_sendpage); ...@@ -2177,7 +2181,3 @@ EXPORT_SYMBOL(tcp_sendpage);
EXPORT_SYMBOL(tcp_setsockopt); EXPORT_SYMBOL(tcp_setsockopt);
EXPORT_SYMBOL(tcp_shutdown); EXPORT_SYMBOL(tcp_shutdown);
EXPORT_SYMBOL(tcp_statistics); EXPORT_SYMBOL(tcp_statistics);
#ifdef CONFIG_COMPAT
EXPORT_SYMBOL(compat_tcp_setsockopt);
EXPORT_SYMBOL(compat_tcp_getsockopt);
#endif
...@@ -1226,12 +1226,12 @@ struct inet_connection_sock_af_ops ipv4_specific = { ...@@ -1226,12 +1226,12 @@ struct inet_connection_sock_af_ops ipv4_specific = {
.net_header_len = sizeof(struct iphdr), .net_header_len = sizeof(struct iphdr),
.setsockopt = ip_setsockopt, .setsockopt = ip_setsockopt,
.getsockopt = ip_getsockopt, .getsockopt = ip_getsockopt,
.addr2sockaddr = inet_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ip_setsockopt, .compat_setsockopt = compat_ip_setsockopt,
.compat_getsockopt = compat_ip_getsockopt, .compat_getsockopt = compat_ip_getsockopt,
#endif #endif
.addr2sockaddr = inet_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in),
}; };
/* NOTE: A lot of things set to zero explicitly by call to /* NOTE: A lot of things set to zero explicitly by call to
...@@ -1812,10 +1812,6 @@ struct proto tcp_prot = { ...@@ -1812,10 +1812,6 @@ struct proto tcp_prot = {
.shutdown = tcp_shutdown, .shutdown = tcp_shutdown,
.setsockopt = tcp_setsockopt, .setsockopt = tcp_setsockopt,
.getsockopt = tcp_getsockopt, .getsockopt = tcp_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_tcp_setsockopt,
.compat_getsockopt = compat_tcp_getsockopt,
#endif
.sendmsg = tcp_sendmsg, .sendmsg = tcp_sendmsg,
.recvmsg = tcp_recvmsg, .recvmsg = tcp_recvmsg,
.backlog_rcv = tcp_v4_do_rcv, .backlog_rcv = tcp_v4_do_rcv,
...@@ -1834,6 +1830,10 @@ struct proto tcp_prot = { ...@@ -1834,6 +1830,10 @@ struct proto tcp_prot = {
.obj_size = sizeof(struct tcp_sock), .obj_size = sizeof(struct tcp_sock),
.twsk_prot = &tcp_timewait_sock_ops, .twsk_prot = &tcp_timewait_sock_ops,
.rsk_prot = &tcp_request_sock_ops, .rsk_prot = &tcp_request_sock_ops,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_tcp_setsockopt,
.compat_getsockopt = compat_tcp_getsockopt,
#endif
}; };
void __init tcp_v4_init(struct net_proto_family *ops) void __init tcp_v4_init(struct net_proto_family *ops)
......
...@@ -1266,8 +1266,7 @@ static int compat_udp_setsockopt(struct sock *sk, int level, int optname, ...@@ -1266,8 +1266,7 @@ static int compat_udp_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen) char __user *optval, int optlen)
{ {
if (level != SOL_UDP) if (level != SOL_UDP)
return compat_ip_setsockopt(sk, level, return compat_ip_setsockopt(sk, level, optname, optval, optlen);
optname, optval, optlen);
return do_udp_setsockopt(sk, level, optname, optval, optlen); return do_udp_setsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -1319,8 +1318,7 @@ static int compat_udp_getsockopt(struct sock *sk, int level, int optname, ...@@ -1319,8 +1318,7 @@ static int compat_udp_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
if (level != SOL_UDP) if (level != SOL_UDP)
return compat_ip_getsockopt(sk, level, return compat_ip_getsockopt(sk, level, optname, optval, optlen);
optname, optval, optlen);
return do_udp_getsockopt(sk, level, optname, optval, optlen); return do_udp_getsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -1381,10 +1379,6 @@ struct proto udp_prot = { ...@@ -1381,10 +1379,6 @@ struct proto udp_prot = {
.destroy = udp_destroy_sock, .destroy = udp_destroy_sock,
.setsockopt = udp_setsockopt, .setsockopt = udp_setsockopt,
.getsockopt = udp_getsockopt, .getsockopt = udp_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_udp_setsockopt,
.compat_getsockopt = compat_udp_getsockopt,
#endif
.sendmsg = udp_sendmsg, .sendmsg = udp_sendmsg,
.recvmsg = udp_recvmsg, .recvmsg = udp_recvmsg,
.sendpage = udp_sendpage, .sendpage = udp_sendpage,
...@@ -1393,6 +1387,10 @@ struct proto udp_prot = { ...@@ -1393,6 +1387,10 @@ struct proto udp_prot = {
.unhash = udp_v4_unhash, .unhash = udp_v4_unhash,
.get_port = udp_v4_get_port, .get_port = udp_v4_get_port,
.obj_size = sizeof(struct udp_sock), .obj_size = sizeof(struct udp_sock),
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_udp_setsockopt,
.compat_getsockopt = compat_udp_getsockopt,
#endif
}; };
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
......
...@@ -470,14 +470,14 @@ const struct proto_ops inet6_stream_ops = { ...@@ -470,14 +470,14 @@ const struct proto_ops inet6_stream_ops = {
.shutdown = inet_shutdown, /* ok */ .shutdown = inet_shutdown, /* ok */
.setsockopt = sock_common_setsockopt, /* ok */ .setsockopt = sock_common_setsockopt, /* ok */
.getsockopt = sock_common_getsockopt, /* ok */ .getsockopt = sock_common_getsockopt, /* ok */
.sendmsg = inet_sendmsg, /* ok */
.recvmsg = sock_common_recvmsg, /* ok */
.mmap = sock_no_mmap,
.sendpage = tcp_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg, /* ok */
.recvmsg = sock_common_recvmsg, /* ok */
.mmap = sock_no_mmap,
.sendpage = tcp_sendpage
}; };
const struct proto_ops inet6_dgram_ops = { const struct proto_ops inet6_dgram_ops = {
...@@ -495,14 +495,14 @@ const struct proto_ops inet6_dgram_ops = { ...@@ -495,14 +495,14 @@ const struct proto_ops inet6_dgram_ops = {
.shutdown = inet_shutdown, /* ok */ .shutdown = inet_shutdown, /* ok */
.setsockopt = sock_common_setsockopt, /* ok */ .setsockopt = sock_common_setsockopt, /* ok */
.getsockopt = sock_common_getsockopt, /* ok */ .getsockopt = sock_common_getsockopt, /* ok */
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
.sendmsg = inet_sendmsg, /* ok */ .sendmsg = inet_sendmsg, /* ok */
.recvmsg = sock_common_recvmsg, /* ok */ .recvmsg = sock_common_recvmsg, /* ok */
.mmap = sock_no_mmap, .mmap = sock_no_mmap,
.sendpage = sock_no_sendpage, .sendpage = sock_no_sendpage,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
}; };
static struct net_proto_family inet6_family_ops = { static struct net_proto_family inet6_family_ops = {
...@@ -527,14 +527,14 @@ static const struct proto_ops inet6_sockraw_ops = { ...@@ -527,14 +527,14 @@ static const struct proto_ops inet6_sockraw_ops = {
.shutdown = inet_shutdown, /* ok */ .shutdown = inet_shutdown, /* ok */
.setsockopt = sock_common_setsockopt, /* ok */ .setsockopt = sock_common_setsockopt, /* ok */
.getsockopt = sock_common_getsockopt, /* ok */ .getsockopt = sock_common_getsockopt, /* ok */
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
.sendmsg = inet_sendmsg, /* ok */ .sendmsg = inet_sendmsg, /* ok */
.recvmsg = sock_common_recvmsg, /* ok */ .recvmsg = sock_common_recvmsg, /* ok */
.mmap = sock_no_mmap, .mmap = sock_no_mmap,
.sendpage = sock_no_sendpage, .sendpage = sock_no_sendpage,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
}; };
static struct inet_protosw rawv6_protosw = { static struct inet_protosw rawv6_protosw = {
......
...@@ -650,12 +650,10 @@ int compat_ipv6_setsockopt(struct sock *sk, int level, int optname, ...@@ -650,12 +650,10 @@ int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
int err; int err;
if (level == SOL_IP && sk->sk_type != SOCK_RAW) { if (level == SOL_IP && sk->sk_type != SOCK_RAW) {
if (udp_prot.compat_setsockopt) if (udp_prot.compat_setsockopt != NULL)
return udp_prot.compat_setsockopt(sk, level, return udp_prot.compat_setsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
else return udp_prot.setsockopt(sk, level, optname, optval, optlen);
return udp_prot.setsockopt(sk, level,
optname, optval, optlen);
} }
if (level != SOL_IPV6) if (level != SOL_IPV6)
...@@ -667,13 +665,15 @@ int compat_ipv6_setsockopt(struct sock *sk, int level, int optname, ...@@ -667,13 +665,15 @@ int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
if (err == -ENOPROTOOPT && optname != IPV6_IPSEC_POLICY && if (err == -ENOPROTOOPT && optname != IPV6_IPSEC_POLICY &&
optname != IPV6_XFRM_POLICY) { optname != IPV6_XFRM_POLICY) {
lock_sock(sk); lock_sock(sk);
err = compat_nf_setsockopt(sk, PF_INET6, optname, optval, err = compat_nf_setsockopt(sk, PF_INET6, optname,
optlen); optval, optlen);
release_sock(sk); release_sock(sk);
} }
#endif #endif
return err; return err;
} }
EXPORT_SYMBOL(compat_ipv6_setsockopt);
#endif #endif
static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_opt_hdr *hdr, static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_opt_hdr *hdr,
...@@ -932,15 +932,13 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname, ...@@ -932,15 +932,13 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname,
int err; int err;
if (level == SOL_IP && sk->sk_type != SOCK_RAW) { if (level == SOL_IP && sk->sk_type != SOCK_RAW) {
if (udp_prot.compat_getsockopt) if (udp_prot.compat_getsockopt != NULL)
return udp_prot.compat_getsockopt(sk, level, return udp_prot.compat_getsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
else return udp_prot.getsockopt(sk, level, optname, optval, optlen);
return udp_prot.getsockopt(sk, level,
optname, optval, optlen);
} }
if(level != SOL_IPV6) if (level != SOL_IPV6)
return -ENOPROTOOPT; return -ENOPROTOOPT;
err = do_ipv6_getsockopt(sk, level, optname, optval, optlen); err = do_ipv6_getsockopt(sk, level, optname, optval, optlen);
...@@ -954,8 +952,8 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname, ...@@ -954,8 +952,8 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname,
return -EFAULT; return -EFAULT;
lock_sock(sk); lock_sock(sk);
err = compat_nf_getsockopt(sk, PF_INET6, optname, optval, err = compat_nf_getsockopt(sk, PF_INET6,
&len); optname, optval, &len);
release_sock(sk); release_sock(sk);
if (err >= 0) if (err >= 0)
err = put_user(len, optlen); err = put_user(len, optlen);
...@@ -963,6 +961,8 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname, ...@@ -963,6 +961,8 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname,
#endif #endif
return err; return err;
} }
EXPORT_SYMBOL(compat_ipv6_getsockopt);
#endif #endif
void __init ipv6_packet_init(void) void __init ipv6_packet_init(void)
......
...@@ -18,10 +18,6 @@ EXPORT_SYMBOL(ip6_route_output); ...@@ -18,10 +18,6 @@ EXPORT_SYMBOL(ip6_route_output);
EXPORT_SYMBOL(addrconf_lock); EXPORT_SYMBOL(addrconf_lock);
EXPORT_SYMBOL(ipv6_setsockopt); EXPORT_SYMBOL(ipv6_setsockopt);
EXPORT_SYMBOL(ipv6_getsockopt); EXPORT_SYMBOL(ipv6_getsockopt);
#ifdef CONFIG_COMPAT
EXPORT_SYMBOL(compat_ipv6_setsockopt);
EXPORT_SYMBOL(compat_ipv6_getsockopt);
#endif
EXPORT_SYMBOL(inet6_register_protosw); EXPORT_SYMBOL(inet6_register_protosw);
EXPORT_SYMBOL(inet6_unregister_protosw); EXPORT_SYMBOL(inet6_unregister_protosw);
EXPORT_SYMBOL(inet6_add_protocol); EXPORT_SYMBOL(inet6_add_protocol);
......
...@@ -915,21 +915,19 @@ static int rawv6_setsockopt(struct sock *sk, int level, int optname, ...@@ -915,21 +915,19 @@ static int rawv6_setsockopt(struct sock *sk, int level, int optname,
static int compat_rawv6_setsockopt(struct sock *sk, int level, int optname, static int compat_rawv6_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen) char __user *optval, int optlen)
{ {
switch(level) { switch (level) {
case SOL_RAW: case SOL_RAW:
break; break;
case SOL_ICMPV6: case SOL_ICMPV6:
if (inet_sk(sk)->num != IPPROTO_ICMPV6) if (inet_sk(sk)->num != IPPROTO_ICMPV6)
return -EOPNOTSUPP; return -EOPNOTSUPP;
return rawv6_seticmpfilter(sk, level, optname, optval, return rawv6_seticmpfilter(sk, level, optname, optval, optlen);
optlen);
case SOL_IPV6: case SOL_IPV6:
if (optname == IPV6_CHECKSUM) if (optname == IPV6_CHECKSUM)
break; break;
default: default:
return compat_ipv6_setsockopt(sk, level, return compat_ipv6_setsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
}; };
return do_rawv6_setsockopt(sk, level, optname, optval, optlen); return do_rawv6_setsockopt(sk, level, optname, optval, optlen);
} }
...@@ -991,21 +989,19 @@ static int rawv6_getsockopt(struct sock *sk, int level, int optname, ...@@ -991,21 +989,19 @@ static int rawv6_getsockopt(struct sock *sk, int level, int optname,
static int compat_rawv6_getsockopt(struct sock *sk, int level, int optname, static int compat_rawv6_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
switch(level) { switch (level) {
case SOL_RAW: case SOL_RAW:
break; break;
case SOL_ICMPV6: case SOL_ICMPV6:
if (inet_sk(sk)->num != IPPROTO_ICMPV6) if (inet_sk(sk)->num != IPPROTO_ICMPV6)
return -EOPNOTSUPP; return -EOPNOTSUPP;
return rawv6_geticmpfilter(sk, level, optname, optval, return rawv6_geticmpfilter(sk, level, optname, optval, optlen);
optlen);
case SOL_IPV6: case SOL_IPV6:
if (optname == IPV6_CHECKSUM) if (optname == IPV6_CHECKSUM)
break; break;
default: default:
return compat_ipv6_getsockopt(sk, level, return compat_ipv6_getsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
}; };
return do_rawv6_getsockopt(sk, level, optname, optval, optlen); return do_rawv6_getsockopt(sk, level, optname, optval, optlen);
} }
...@@ -1066,10 +1062,6 @@ struct proto rawv6_prot = { ...@@ -1066,10 +1062,6 @@ struct proto rawv6_prot = {
.destroy = inet6_destroy_sock, .destroy = inet6_destroy_sock,
.setsockopt = rawv6_setsockopt, .setsockopt = rawv6_setsockopt,
.getsockopt = rawv6_getsockopt, .getsockopt = rawv6_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_rawv6_setsockopt,
.compat_getsockopt = compat_rawv6_getsockopt,
#endif
.sendmsg = rawv6_sendmsg, .sendmsg = rawv6_sendmsg,
.recvmsg = rawv6_recvmsg, .recvmsg = rawv6_recvmsg,
.bind = rawv6_bind, .bind = rawv6_bind,
...@@ -1077,6 +1069,10 @@ struct proto rawv6_prot = { ...@@ -1077,6 +1069,10 @@ struct proto rawv6_prot = {
.hash = raw_v6_hash, .hash = raw_v6_hash,
.unhash = raw_v6_unhash, .unhash = raw_v6_unhash,
.obj_size = sizeof(struct raw6_sock), .obj_size = sizeof(struct raw6_sock),
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_rawv6_setsockopt,
.compat_getsockopt = compat_rawv6_getsockopt,
#endif
}; };
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
......
...@@ -1305,15 +1305,14 @@ static struct inet_connection_sock_af_ops ipv6_specific = { ...@@ -1305,15 +1305,14 @@ static struct inet_connection_sock_af_ops ipv6_specific = {
.syn_recv_sock = tcp_v6_syn_recv_sock, .syn_recv_sock = tcp_v6_syn_recv_sock,
.remember_stamp = tcp_v6_remember_stamp, .remember_stamp = tcp_v6_remember_stamp,
.net_header_len = sizeof(struct ipv6hdr), .net_header_len = sizeof(struct ipv6hdr),
.setsockopt = ipv6_setsockopt, .setsockopt = ipv6_setsockopt,
.getsockopt = ipv6_getsockopt, .getsockopt = ipv6_getsockopt,
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt, .compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt, .compat_getsockopt = compat_ipv6_getsockopt,
#endif #endif
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6)
}; };
/* /*
...@@ -1328,19 +1327,16 @@ static struct inet_connection_sock_af_ops ipv6_mapped = { ...@@ -1328,19 +1327,16 @@ static struct inet_connection_sock_af_ops ipv6_mapped = {
.syn_recv_sock = tcp_v6_syn_recv_sock, .syn_recv_sock = tcp_v6_syn_recv_sock,
.remember_stamp = tcp_v4_remember_stamp, .remember_stamp = tcp_v4_remember_stamp,
.net_header_len = sizeof(struct iphdr), .net_header_len = sizeof(struct iphdr),
.setsockopt = ipv6_setsockopt, .setsockopt = ipv6_setsockopt,
.getsockopt = ipv6_getsockopt, .getsockopt = ipv6_getsockopt,
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt, .compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt, .compat_getsockopt = compat_ipv6_getsockopt,
#endif #endif
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6)
}; };
/* NOTE: A lot of things set to zero explicitly by call to /* NOTE: A lot of things set to zero explicitly by call to
* sk_alloc() so need not be done here. * sk_alloc() so need not be done here.
*/ */
...@@ -1574,10 +1570,6 @@ struct proto tcpv6_prot = { ...@@ -1574,10 +1570,6 @@ struct proto tcpv6_prot = {
.shutdown = tcp_shutdown, .shutdown = tcp_shutdown,
.setsockopt = tcp_setsockopt, .setsockopt = tcp_setsockopt,
.getsockopt = tcp_getsockopt, .getsockopt = tcp_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_tcp_setsockopt,
.compat_getsockopt = compat_tcp_getsockopt,
#endif
.sendmsg = tcp_sendmsg, .sendmsg = tcp_sendmsg,
.recvmsg = tcp_recvmsg, .recvmsg = tcp_recvmsg,
.backlog_rcv = tcp_v6_do_rcv, .backlog_rcv = tcp_v6_do_rcv,
...@@ -1596,6 +1588,10 @@ struct proto tcpv6_prot = { ...@@ -1596,6 +1588,10 @@ struct proto tcpv6_prot = {
.obj_size = sizeof(struct tcp6_sock), .obj_size = sizeof(struct tcp6_sock),
.twsk_prot = &tcp6_timewait_sock_ops, .twsk_prot = &tcp6_timewait_sock_ops,
.rsk_prot = &tcp6_request_sock_ops, .rsk_prot = &tcp6_request_sock_ops,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_tcp_setsockopt,
.compat_getsockopt = compat_tcp_getsockopt,
#endif
}; };
static struct inet6_protocol tcpv6_protocol = { static struct inet6_protocol tcpv6_protocol = {
......
...@@ -937,8 +937,8 @@ static int compat_udpv6_setsockopt(struct sock *sk, int level, int optname, ...@@ -937,8 +937,8 @@ static int compat_udpv6_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen) char __user *optval, int optlen)
{ {
if (level != SOL_UDP) if (level != SOL_UDP)
return compat_ipv6_setsockopt(sk, level, return compat_ipv6_setsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
return do_udpv6_setsockopt(sk, level, optname, optval, optlen); return do_udpv6_setsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -990,8 +990,8 @@ static int compat_udpv6_getsockopt(struct sock *sk, int level, int optname, ...@@ -990,8 +990,8 @@ static int compat_udpv6_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
if (level != SOL_UDP) if (level != SOL_UDP)
return compat_ipv6_getsockopt(sk, level, return compat_ipv6_getsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
return do_udpv6_getsockopt(sk, level, optname, optval, optlen); return do_udpv6_getsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -1078,10 +1078,6 @@ struct proto udpv6_prot = { ...@@ -1078,10 +1078,6 @@ struct proto udpv6_prot = {
.destroy = udpv6_destroy_sock, .destroy = udpv6_destroy_sock,
.setsockopt = udpv6_setsockopt, .setsockopt = udpv6_setsockopt,
.getsockopt = udpv6_getsockopt, .getsockopt = udpv6_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_udpv6_setsockopt,
.compat_getsockopt = compat_udpv6_getsockopt,
#endif
.sendmsg = udpv6_sendmsg, .sendmsg = udpv6_sendmsg,
.recvmsg = udpv6_recvmsg, .recvmsg = udpv6_recvmsg,
.backlog_rcv = udpv6_queue_rcv_skb, .backlog_rcv = udpv6_queue_rcv_skb,
...@@ -1089,6 +1085,10 @@ struct proto udpv6_prot = { ...@@ -1089,6 +1085,10 @@ struct proto udpv6_prot = {
.unhash = udp_v6_unhash, .unhash = udp_v6_unhash,
.get_port = udp_v6_get_port, .get_port = udp_v6_get_port,
.obj_size = sizeof(struct udp6_sock), .obj_size = sizeof(struct udp6_sock),
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_udpv6_setsockopt,
.compat_getsockopt = compat_udpv6_getsockopt,
#endif
}; };
static struct inet_protosw udpv6_protosw = { static struct inet_protosw udpv6_protosw = {
......
...@@ -875,13 +875,13 @@ static const struct proto_ops inet6_seqpacket_ops = { ...@@ -875,13 +875,13 @@ static const struct proto_ops inet6_seqpacket_ops = {
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
}; };
static struct inet_protosw sctpv6_seqpacket_protosw = { static struct inet_protosw sctpv6_seqpacket_protosw = {
...@@ -915,13 +915,10 @@ static struct inet6_protocol sctpv6_protocol = { ...@@ -915,13 +915,10 @@ static struct inet6_protocol sctpv6_protocol = {
}; };
static struct sctp_af sctp_ipv6_specific = { static struct sctp_af sctp_ipv6_specific = {
.sa_family = AF_INET6,
.sctp_xmit = sctp_v6_xmit, .sctp_xmit = sctp_v6_xmit,
.setsockopt = ipv6_setsockopt, .setsockopt = ipv6_setsockopt,
.getsockopt = ipv6_getsockopt, .getsockopt = ipv6_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt,
#endif
.get_dst = sctp_v6_get_dst, .get_dst = sctp_v6_get_dst,
.get_saddr = sctp_v6_get_saddr, .get_saddr = sctp_v6_get_saddr,
.copy_addrlist = sctp_v6_copy_addrlist, .copy_addrlist = sctp_v6_copy_addrlist,
...@@ -943,7 +940,10 @@ static struct sctp_af sctp_ipv6_specific = { ...@@ -943,7 +940,10 @@ static struct sctp_af sctp_ipv6_specific = {
.seq_dump_addr = sctp_v6_seq_dump_addr, .seq_dump_addr = sctp_v6_seq_dump_addr,
.net_header_len = sizeof(struct ipv6hdr), .net_header_len = sizeof(struct ipv6hdr),
.sockaddr_len = sizeof(struct sockaddr_in6), .sockaddr_len = sizeof(struct sockaddr_in6),
.sa_family = AF_INET6, #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt,
#endif
}; };
static struct sctp_pf sctp_pf_inet6_specific = { static struct sctp_pf sctp_pf_inet6_specific = {
......
...@@ -843,16 +843,16 @@ static const struct proto_ops inet_seqpacket_ops = { ...@@ -843,16 +843,16 @@ static const struct proto_ops inet_seqpacket_ops = {
.ioctl = inet_ioctl, .ioctl = inet_ioctl,
.listen = sctp_inet_listen, .listen = sctp_inet_listen,
.shutdown = inet_shutdown, /* Looks harmless. */ .shutdown = inet_shutdown, /* Looks harmless. */
.setsockopt = sock_common_setsockopt, /* IP_SOL IP_OPTION is a problem. */ .setsockopt = sock_common_setsockopt, /* IP_SOL IP_OPTION is a problem */
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
.sendmsg = inet_sendmsg, .sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg, .recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap, .mmap = sock_no_mmap,
.sendpage = sock_no_sendpage, .sendpage = sock_no_sendpage,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
#endif
}; };
/* Registration with AF_INET family. */ /* Registration with AF_INET family. */
...@@ -884,13 +884,10 @@ static struct net_protocol sctp_protocol = { ...@@ -884,13 +884,10 @@ static struct net_protocol sctp_protocol = {
/* IPv4 address related functions. */ /* IPv4 address related functions. */
static struct sctp_af sctp_ipv4_specific = { static struct sctp_af sctp_ipv4_specific = {
.sa_family = AF_INET,
.sctp_xmit = sctp_v4_xmit, .sctp_xmit = sctp_v4_xmit,
.setsockopt = ip_setsockopt, .setsockopt = ip_setsockopt,
.getsockopt = ip_getsockopt, .getsockopt = ip_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ip_setsockopt,
.compat_getsockopt = compat_ip_getsockopt,
#endif
.get_dst = sctp_v4_get_dst, .get_dst = sctp_v4_get_dst,
.get_saddr = sctp_v4_get_saddr, .get_saddr = sctp_v4_get_saddr,
.copy_addrlist = sctp_v4_copy_addrlist, .copy_addrlist = sctp_v4_copy_addrlist,
...@@ -898,7 +895,7 @@ static struct sctp_af sctp_ipv4_specific = { ...@@ -898,7 +895,7 @@ static struct sctp_af sctp_ipv4_specific = {
.from_sk = sctp_v4_from_sk, .from_sk = sctp_v4_from_sk,
.to_sk_saddr = sctp_v4_to_sk_saddr, .to_sk_saddr = sctp_v4_to_sk_saddr,
.to_sk_daddr = sctp_v4_to_sk_daddr, .to_sk_daddr = sctp_v4_to_sk_daddr,
.from_addr_param= sctp_v4_from_addr_param, .from_addr_param = sctp_v4_from_addr_param,
.to_addr_param = sctp_v4_to_addr_param, .to_addr_param = sctp_v4_to_addr_param,
.dst_saddr = sctp_v4_dst_saddr, .dst_saddr = sctp_v4_dst_saddr,
.cmp_addr = sctp_v4_cmp_addr, .cmp_addr = sctp_v4_cmp_addr,
...@@ -912,7 +909,10 @@ static struct sctp_af sctp_ipv4_specific = { ...@@ -912,7 +909,10 @@ static struct sctp_af sctp_ipv4_specific = {
.seq_dump_addr = sctp_v4_seq_dump_addr, .seq_dump_addr = sctp_v4_seq_dump_addr,
.net_header_len = sizeof(struct iphdr), .net_header_len = sizeof(struct iphdr),
.sockaddr_len = sizeof(struct sockaddr_in), .sockaddr_len = sizeof(struct sockaddr_in),
.sa_family = AF_INET, #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ip_setsockopt,
.compat_getsockopt = compat_ip_getsockopt,
#endif
}; };
struct sctp_pf *sctp_get_pf_specific(sa_family_t family) { struct sctp_pf *sctp_get_pf_specific(sa_family_t family) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册