vserver 1.9.5.x5
[linux-2.6.git] / net / ipv6 / ipv6_sockglue.c
index 4f77f0f..e2d848a 100644 (file)
@@ -55,7 +55,7 @@
 
 #include <asm/uaccess.h>
 
-DEFINE_SNMP_STAT(struct ipv6_mib, ipv6_statistics);
+DEFINE_SNMP_STAT(struct ipstats_mib, ipv6_statistics);
 
 static struct packet_type ipv6_packet_type = {
        .type = __constant_htons(ETH_P_IPV6), 
@@ -63,7 +63,7 @@ static struct packet_type ipv6_packet_type = {
 };
 
 struct ip6_ra_chain *ip6_ra_chain;
-rwlock_t ip6_ra_lock = RW_LOCK_UNLOCKED;
+DEFINE_RWLOCK(ip6_ra_lock);
 
 int ip6_ra_control(struct sock *sk, int sel, void (*destructor)(struct sock *))
 {
@@ -113,11 +113,11 @@ extern int ip6_mc_source(int add, int omode, struct sock *sk,
        struct group_source_req *pgsr);
 extern int ip6_mc_msfilter(struct sock *sk, struct group_filter *gsf);
 extern int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf,
-       struct group_filter *optval, int *optlen);
+       struct group_filter __user *optval, int __user *optlen);
 
 
-int ipv6_setsockopt(struct sock *sk, int level, int optname, char *optval, 
-                   int optlen)
+int ipv6_setsockopt(struct sock *sk, int level, int optname,
+                   char __user *optval, int optlen)
 {
        struct ipv6_pinfo *np = inet6_sk(sk);
        int val, valbool;
@@ -131,7 +131,7 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname, char *optval,
 
        if (optval == NULL)
                val=0;
-       else if (get_user(val, (int *) optval))
+       else if (get_user(val, (int __user *) optval))
                return -EFAULT;
 
        valbool = (val!=0);
@@ -164,7 +164,7 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname, char *optval,
                        ipv6_sock_mc_close(sk);
 
                        if (sk->sk_protocol == IPPROTO_TCP) {
-                               struct tcp_opt *tp = tcp_sk(sk);
+                               struct tcp_sock *tp = tcp_sk(sk);
 
                                local_bh_disable();
                                sock_prot_dec_use(sk->sk_prot);
@@ -281,7 +281,7 @@ update:
                retv = 0;
                if (sk->sk_type == SOCK_STREAM) {
                        if (opt) {
-                               struct tcp_opt *tp = tcp_sk(sk);
+                               struct tcp_sock *tp = tcp_sk(sk);
                                if (!((1 << sk->sk_state) &
                                      (TCPF_LISTEN | TCPF_CLOSE))
                                    && inet_sk(sk)->daddr != LOOPBACK4_IPV6) {
@@ -524,8 +524,8 @@ e_inval:
        return -EINVAL;
 }
 
-int ipv6_getsockopt(struct sock *sk, int level, int optname, char *optval, 
-                   int *optlen)
+int ipv6_getsockopt(struct sock *sk, int level, int optname,
+                   char __user *optval, int __user *optlen)
 {
        struct ipv6_pinfo *np = inet6_sk(sk);
        int len;
@@ -557,7 +557,7 @@ int ipv6_getsockopt(struct sock *sk, int level, int optname, char *optval,
                        return -EFAULT;
                lock_sock(sk);
                err = ip6_mc_msfget(sk, &gsf,
-                       (struct group_filter *)optval, optlen);
+                       (struct group_filter __user *)optval, optlen);
                release_sock(sk);
                return err;
        }