]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - net/l2tp/l2tp_ip6.c
Merge branch 'tcp-eor'
[mirror_ubuntu-artful-kernel.git] / net / l2tp / l2tp_ip6.c
index 6b54ff3ff4cb8e7af49e7ee315cc78cfca148007..46e07267e503ea3e5d064032c72b0a3f506ddc8d 100644 (file)
@@ -136,12 +136,11 @@ static int l2tp_ip6_recv(struct sk_buff *skb)
        struct l2tp_tunnel *tunnel = NULL;
        int length;
 
-       /* Point to L2TP header */
-       optr = ptr = skb->data;
-
        if (!pskb_may_pull(skb, 4))
                goto discard;
 
+       /* Point to L2TP header */
+       optr = ptr = skb->data;
        session_id = ntohl(*((__be32 *) ptr));
        ptr += 4;
 
@@ -169,6 +168,9 @@ static int l2tp_ip6_recv(struct sk_buff *skb)
                if (!pskb_may_pull(skb, length))
                        goto discard;
 
+               /* Point to L2TP header */
+               optr = ptr = skb->data;
+               ptr += 4;
                pr_debug("%s: ip recv\n", tunnel->name);
                print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, ptr, length);
        }
@@ -492,6 +494,7 @@ static int l2tp_ip6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
        struct ip6_flowlabel *flowlabel = NULL;
        struct dst_entry *dst = NULL;
        struct flowi6 fl6;
+       struct sockcm_cookie sockc_unused = {0};
        int addr_len = msg->msg_namelen;
        int hlimit = -1;
        int tclass = -1;
@@ -562,9 +565,10 @@ static int l2tp_ip6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
                memset(opt, 0, sizeof(struct ipv6_txoptions));
                opt->tot_len = sizeof(struct ipv6_txoptions);
 
-               err = ip6_datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt,
-                                           &hlimit, &tclass, &dontfrag);
-               if (err < 0) {
+                err = ip6_datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt,
+                                            &hlimit, &tclass, &dontfrag,
+                                            &sockc_unused);
+                if (err < 0) {
                        fl6_sock_release(flowlabel);
                        return err;
                }
@@ -625,7 +629,7 @@ back_from_confirm:
        err = ip6_append_data(sk, ip_generic_getfrag, msg,
                              ulen, transhdrlen, hlimit, tclass, opt,
                              &fl6, (struct rt6_info *)dst,
-                             msg->msg_flags, dontfrag);
+                             msg->msg_flags, dontfrag, &sockc_unused);
        if (err)
                ip6_flush_pending_frames(sk);
        else if (!(msg->msg_flags & MSG_MORE))