From f7260906cb3d34647956944649564f0e5f10f25a Mon Sep 17 00:00:00 2001 From: Gerrit Renker Date: Thu, 4 Sep 2008 07:30:19 +0200 Subject: [PATCH] --- yaml --- r: 111456 b: refs/heads/master c: 702083839b607f390dbed5d2304eb8fc5f4c85ac h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/dccp/dccp.h | 2 ++ trunk/net/dccp/ipv4.c | 1 + trunk/net/dccp/ipv6.c | 1 + trunk/net/dccp/proto.c | 2 +- 5 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 91fd40683342..b21340494c1b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 828755cee087e4a34f45d6c9db661ccd0631cc6d +refs/heads/master: 702083839b607f390dbed5d2304eb8fc5f4c85ac diff --git a/trunk/net/dccp/dccp.h b/trunk/net/dccp/dccp.h index ab096c06bba0..dee4a90886d6 100644 --- a/trunk/net/dccp/dccp.h +++ b/trunk/net/dccp/dccp.h @@ -442,6 +442,8 @@ static inline int dccp_ack_pending(const struct sock *sk) inet_csk_ack_scheduled(sk); } +extern void dccp_feat_list_purge(struct list_head *fn_list); + extern int dccp_insert_options(struct sock *sk, struct sk_buff *skb); extern int dccp_insert_options_rsk(struct dccp_request_sock*, struct sk_buff*); extern int dccp_insert_option_elapsed_time(struct sock *sk, diff --git a/trunk/net/dccp/ipv4.c b/trunk/net/dccp/ipv4.c index 0ce84ea89119..b623f6b25482 100644 --- a/trunk/net/dccp/ipv4.c +++ b/trunk/net/dccp/ipv4.c @@ -545,6 +545,7 @@ static void dccp_v4_ctl_send_reset(struct sock *sk, struct sk_buff *rxskb) static void dccp_v4_reqsk_destructor(struct request_sock *req) { + dccp_feat_list_purge(&dccp_rsk(req)->dreq_featneg); kfree(inet_rsk(req)->opt); } diff --git a/trunk/net/dccp/ipv6.c b/trunk/net/dccp/ipv6.c index 33e8a1ea3041..ad6212e00435 100644 --- a/trunk/net/dccp/ipv6.c +++ b/trunk/net/dccp/ipv6.c @@ -302,6 +302,7 @@ static int dccp_v6_send_response(struct sock *sk, struct request_sock *req) static void dccp_v6_reqsk_destructor(struct request_sock *req) { + dccp_feat_list_purge(&dccp_rsk(req)->dreq_featneg); if (inet6_rsk(req)->pktopts != NULL) kfree_skb(inet6_rsk(req)->pktopts); } diff --git a/trunk/net/dccp/proto.c b/trunk/net/dccp/proto.c index 1cdf4ae99605..dafcefd86594 100644 --- a/trunk/net/dccp/proto.c +++ b/trunk/net/dccp/proto.c @@ -268,7 +268,7 @@ void dccp_destroy_sock(struct sock *sk) dp->dccps_hc_rx_ccid = dp->dccps_hc_tx_ccid = NULL; /* clean up feature negotiation state */ - dccp_feat_clean(dmsk); + dccp_feat_list_purge(&dp->dccps_featneg); } EXPORT_SYMBOL_GPL(dccp_destroy_sock);