aboutsummaryrefslogtreecommitdiffstats
path: root/net/dccp/ipv4.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/dccp/ipv4.c')
-rw-r--r--net/dccp/ipv4.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index e3dfddab21cc..d1dd95289b89 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -545,6 +545,7 @@ out:
545 545
546static void dccp_v4_reqsk_destructor(struct request_sock *req) 546static void dccp_v4_reqsk_destructor(struct request_sock *req)
547{ 547{
548 dccp_feat_list_purge(&dccp_rsk(req)->dreq_featneg);
548 kfree(inet_rsk(req)->opt); 549 kfree(inet_rsk(req)->opt);
549} 550}
550 551
@@ -595,7 +596,8 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
595 if (req == NULL) 596 if (req == NULL)
596 goto drop; 597 goto drop;
597 598
598 dccp_reqsk_init(req, skb); 599 if (dccp_reqsk_init(req, dccp_sk(sk), skb))
600 goto drop_and_free;
599 601
600 dreq = dccp_rsk(req); 602 dreq = dccp_rsk(req);
601 if (dccp_parse_options(sk, dreq, skb)) 603 if (dccp_parse_options(sk, dreq, skb))
@@ -792,12 +794,10 @@ static int dccp_v4_rcv(struct sk_buff *skb)
792 DCCP_SKB_CB(skb)->dccpd_seq = dccp_hdr_seq(dh); 794 DCCP_SKB_CB(skb)->dccpd_seq = dccp_hdr_seq(dh);
793 DCCP_SKB_CB(skb)->dccpd_type = dh->dccph_type; 795 DCCP_SKB_CB(skb)->dccpd_type = dh->dccph_type;
794 796
795 dccp_pr_debug("%8.8s " 797 dccp_pr_debug("%8.8s src=%pI4@%-5d dst=%pI4@%-5d seq=%llu",
796 "src=%u.%u.%u.%u@%-5d "
797 "dst=%u.%u.%u.%u@%-5d seq=%llu",
798 dccp_packet_name(dh->dccph_type), 798 dccp_packet_name(dh->dccph_type),
799 NIPQUAD(iph->saddr), ntohs(dh->dccph_sport), 799 &iph->saddr, ntohs(dh->dccph_sport),
800 NIPQUAD(iph->daddr), ntohs(dh->dccph_dport), 800 &iph->daddr, ntohs(dh->dccph_dport),
801 (unsigned long long) DCCP_SKB_CB(skb)->dccpd_seq); 801 (unsigned long long) DCCP_SKB_CB(skb)->dccpd_seq);
802 802
803 if (dccp_packet_without_ack(skb)) { 803 if (dccp_packet_without_ack(skb)) {
@@ -938,6 +938,7 @@ static struct proto dccp_v4_prot = {
938 .orphan_count = &dccp_orphan_count, 938 .orphan_count = &dccp_orphan_count,
939 .max_header = MAX_DCCP_HEADER, 939 .max_header = MAX_DCCP_HEADER,
940 .obj_size = sizeof(struct dccp_sock), 940 .obj_size = sizeof(struct dccp_sock),
941 .slab_flags = SLAB_DESTROY_BY_RCU,
941 .rsk_prot = &dccp_request_sock_ops, 942 .rsk_prot = &dccp_request_sock_ops,
942 .twsk_prot = &dccp_timewait_sock_ops, 943 .twsk_prot = &dccp_timewait_sock_ops,
943 .h.hashinfo = &dccp_hashinfo, 944 .h.hashinfo = &dccp_hashinfo,