Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[pandora-kernel.git] / net / ipv6 / af_inet6.c
index e733942..56b9bf2 100644 (file)
@@ -522,10 +522,10 @@ const struct proto_ops inet6_stream_ops = {
        .shutdown          = inet_shutdown,             /* ok           */
        .setsockopt        = sock_common_setsockopt,    /* ok           */
        .getsockopt        = sock_common_getsockopt,    /* ok           */
-       .sendmsg           = tcp_sendmsg,               /* ok           */
-       .recvmsg           = sock_common_recvmsg,       /* ok           */
+       .sendmsg           = inet_sendmsg,              /* ok           */
+       .recvmsg           = inet_recvmsg,              /* ok           */
        .mmap              = sock_no_mmap,
-       .sendpage          = tcp_sendpage,
+       .sendpage          = inet_sendpage,
        .splice_read       = tcp_splice_read,
 #ifdef CONFIG_COMPAT
        .compat_setsockopt = compat_sock_common_setsockopt,
@@ -549,7 +549,7 @@ const struct proto_ops inet6_dgram_ops = {
        .setsockopt        = sock_common_setsockopt,    /* ok           */
        .getsockopt        = sock_common_getsockopt,    /* ok           */
        .sendmsg           = inet_sendmsg,              /* ok           */
-       .recvmsg           = sock_common_recvmsg,       /* ok           */
+       .recvmsg           = inet_recvmsg,              /* ok           */
        .mmap              = sock_no_mmap,
        .sendpage          = sock_no_sendpage,
 #ifdef CONFIG_COMPAT
@@ -651,7 +651,7 @@ int inet6_sk_rebuild_header(struct sock *sk)
 
        if (dst == NULL) {
                struct inet_sock *inet = inet_sk(sk);
-               struct in6_addr *final_p = NULL, final;
+               struct in6_addr *final_p, final;
                struct flowi fl;
 
                memset(&fl, 0, sizeof(fl));
@@ -665,12 +665,7 @@ int inet6_sk_rebuild_header(struct sock *sk)
                fl.fl_ip_sport = inet->inet_sport;
                security_sk_classify_flow(sk, &fl);
 
-               if (np->opt && np->opt->srcrt) {
-                       struct rt0_hdr *rt0 = (struct rt0_hdr *) np->opt->srcrt;
-                       ipv6_addr_copy(&final, &fl.fl6_dst);
-                       ipv6_addr_copy(&fl.fl6_dst, rt0->addr);
-                       final_p = &final;
-               }
+               final_p = fl6_update_dst(&fl, np->opt, &final);
 
                err = ip6_dst_lookup(sk, &dst, &fl);
                if (err) {
@@ -976,19 +971,24 @@ static void ipv6_packet_cleanup(void)
 static int __net_init ipv6_init_mibs(struct net *net)
 {
        if (snmp_mib_init((void __percpu **)net->mib.udp_stats_in6,
-                         sizeof (struct udp_mib)) < 0)
+                         sizeof(struct udp_mib),
+                         __alignof__(struct udp_mib)) < 0)
                return -ENOMEM;
        if (snmp_mib_init((void __percpu **)net->mib.udplite_stats_in6,
-                         sizeof (struct udp_mib)) < 0)
+                         sizeof(struct udp_mib),
+                         __alignof__(struct udp_mib)) < 0)
                goto err_udplite_mib;
        if (snmp_mib_init((void __percpu **)net->mib.ipv6_statistics,
-                         sizeof(struct ipstats_mib)) < 0)
+                         sizeof(struct ipstats_mib),
+                         __alignof__(struct ipstats_mib)) < 0)
                goto err_ip_mib;
        if (snmp_mib_init((void __percpu **)net->mib.icmpv6_statistics,
-                         sizeof(struct icmpv6_mib)) < 0)
+                         sizeof(struct icmpv6_mib),
+                         __alignof__(struct icmpv6_mib)) < 0)
                goto err_icmp_mib;
        if (snmp_mib_init((void __percpu **)net->mib.icmpv6msg_statistics,
-                         sizeof(struct icmpv6msg_mib)) < 0)
+                         sizeof(struct icmpv6msg_mib),
+                         __alignof__(struct icmpv6msg_mib)) < 0)
                goto err_icmpmsg_mib;
        return 0;