.. | .. |
---|
255 | 255 | |
---|
256 | 256 | if (tunnel) |
---|
257 | 257 | l2tp_tunnel_delete(tunnel); |
---|
258 | | - |
---|
259 | | - inet6_destroy_sock(sk); |
---|
260 | 258 | } |
---|
261 | 259 | |
---|
262 | 260 | static int l2tp_ip6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len) |
---|
.. | .. |
---|
510 | 508 | */ |
---|
511 | 509 | if (len > INT_MAX - transhdrlen) |
---|
512 | 510 | return -EMSGSIZE; |
---|
513 | | - ulen = len + transhdrlen; |
---|
514 | 511 | |
---|
515 | 512 | /* Mirror BSD error message compatibility */ |
---|
516 | 513 | if (msg->msg_flags & MSG_OOB) |
---|
.. | .. |
---|
631 | 628 | |
---|
632 | 629 | back_from_confirm: |
---|
633 | 630 | lock_sock(sk); |
---|
| 631 | + ulen = len + skb_queue_empty(&sk->sk_write_queue) ? transhdrlen : 0; |
---|
634 | 632 | err = ip6_append_data(sk, ip_generic_getfrag, msg, |
---|
635 | 633 | ulen, transhdrlen, &ipc6, |
---|
636 | 634 | &fl6, (struct rt6_info *)dst, |
---|