diff options
Diffstat (limited to 'net/dccp/ipv4.c')
-rw-r--r-- | net/dccp/ipv4.c | 13 |
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 | ||
546 | static void dccp_v4_reqsk_destructor(struct request_sock *req) | 546 | static 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, |