ccid2_hc_tx_check_sanity(hctx);
 out:
        bh_unlock_sock(sk);
-/*     sock_put(sk); */
+       sock_put(sk);
 }
 
 static void ccid2_start_rto_timer(struct sock *sk)
        return -1;
 }
 
-static void ccid2_hc_tx_kill_rto_timer(struct ccid2_hc_tx_sock *hctx)
+static void ccid2_hc_tx_kill_rto_timer(struct sock *sk)
 {
-       if (del_timer(&hctx->ccid2hctx_rtotimer))
-               ccid2_pr_debug("deleted RTO timer\n");
+       struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk);
+
+       sk_stop_timer(sk, &hctx->ccid2hctx_rtotimer);
+       ccid2_pr_debug("deleted RTO timer\n");
 }
 
 static inline void ccid2_new_ack(struct sock *sk,
        }
 
        /* we got a new ack, so re-start RTO timer */
-       ccid2_hc_tx_kill_rto_timer(hctx);
+       ccid2_hc_tx_kill_rto_timer(sk);
        ccid2_start_rto_timer(sk);
 }
 
-static void ccid2_hc_tx_dec_pipe(struct ccid2_hc_tx_sock *hctx)
+static void ccid2_hc_tx_dec_pipe(struct sock *sk)
 {
+       struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk);
+
        hctx->ccid2hctx_pipe--;
        BUG_ON(hctx->ccid2hctx_pipe < 0);
 
        if (hctx->ccid2hctx_pipe == 0)
-               ccid2_hc_tx_kill_rto_timer(hctx);
+               ccid2_hc_tx_kill_rto_timer(sk);
 }
 
 static void ccid2_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
                                        seqp->ccid2s_acked = 1;
                                        ccid2_pr_debug("Got ack for %llu\n",
                                                       seqp->ccid2s_seq);
-                                       ccid2_hc_tx_dec_pipe(hctx);
+                                       ccid2_hc_tx_dec_pipe(sk);
                                }
                                if (seqp == hctx->ccid2hctx_seqt) {
                                        done = 1;
                while (1) {
                        if (!seqp->ccid2s_acked) {
                                loss = 1;
-                               ccid2_hc_tx_dec_pipe(hctx);
+                               ccid2_hc_tx_dec_pipe(sk);
                        }
                        if (seqp == hctx->ccid2hctx_seqt)
                                break;
 static void ccid2_hc_tx_exit(struct sock *sk)
 {
        struct dccp_sock *dp = dccp_sk(sk);
-        struct ccid2_hc_tx_sock *hctx = dp->dccps_hc_tx_ccid_private;
+        struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk);
 
-       ccid2_hc_tx_kill_rto_timer(hctx);
+       ccid2_hc_tx_kill_rto_timer(sk);
 
        kfree(hctx->ccid2hctx_seqbuf);