]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/dccp/output.c
Merge ../linux-2.6 by hand
[karo-tx-linux.git] / net / dccp / output.c
index 946ec2db75de74a1170657e7e5f5f591ec35ce4a..d59f86f7ceabbdd21a66a3910fd1f2ac16e52a35 100644 (file)
@@ -100,6 +100,7 @@ int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
 
                DCCP_INC_STATS(DCCP_MIB_OUTSEGS);
 
+               memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
                err = ip_queue_xmit(skb, 0);
                if (err <= 0)
                        return err;
@@ -241,7 +242,8 @@ int dccp_write_xmit(struct sock *sk, struct sk_buff *skb, long *timeo)
 
                err = dccp_transmit_skb(sk, skb);
                ccid_hc_tx_packet_sent(dp->dccps_hc_tx_ccid, sk, 0, len);
-       }
+       } else
+               kfree_skb(skb);
 
        return err;
 }
@@ -493,7 +495,7 @@ void dccp_send_close(struct sock *sk, const int active)
 {
        struct dccp_sock *dp = dccp_sk(sk);
        struct sk_buff *skb;
-       const unsigned int prio = active ? GFP_KERNEL : GFP_ATOMIC;
+       const gfp_t prio = active ? GFP_KERNEL : GFP_ATOMIC;
 
        skb = alloc_skb(sk->sk_prot->max_header, prio);
        if (skb == NULL)