diff options
Diffstat (limited to 'net/dccp/ipv6.c')
-rw-r--r-- | net/dccp/ipv6.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c index 5e1ee0da2c40..ad6212e00435 100644 --- a/net/dccp/ipv6.c +++ b/net/dccp/ipv6.c | |||
@@ -302,6 +302,7 @@ done: | |||
302 | 302 | ||
303 | static void dccp_v6_reqsk_destructor(struct request_sock *req) | 303 | static void dccp_v6_reqsk_destructor(struct request_sock *req) |
304 | { | 304 | { |
305 | dccp_feat_list_purge(&dccp_rsk(req)->dreq_featneg); | ||
305 | if (inet6_rsk(req)->pktopts != NULL) | 306 | if (inet6_rsk(req)->pktopts != NULL) |
306 | kfree_skb(inet6_rsk(req)->pktopts); | 307 | kfree_skb(inet6_rsk(req)->pktopts); |
307 | } | 308 | } |
@@ -424,7 +425,8 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb) | |||
424 | if (req == NULL) | 425 | if (req == NULL) |
425 | goto drop; | 426 | goto drop; |
426 | 427 | ||
427 | dccp_reqsk_init(req, skb); | 428 | if (dccp_reqsk_init(req, dccp_sk(sk), skb)) |
429 | goto drop_and_free; | ||
428 | 430 | ||
429 | dreq = dccp_rsk(req); | 431 | dreq = dccp_rsk(req); |
430 | if (dccp_parse_options(sk, dreq, skb)) | 432 | if (dccp_parse_options(sk, dreq, skb)) |