From c6a9995c56538755140a9241c6e20f323e3d7605 Mon Sep 17 00:00:00 2001 From: Timo Teras Date: Wed, 1 Oct 2008 05:17:54 -0700 Subject: [PATCH] --- yaml --- r: 110111 b: refs/heads/master c: 0523820482dcb42784572ffd2296c2f08c275a2b h: refs/heads/master i: 110109: a7da74dd1ca51e9547d3939fa2bbc61fa798013c 110107: 671a8522eb00a00bab798af46e0d6bd5a6591745 110103: 2359848c00aa1900e4a9349c793ac97eb769edab 110095: 45ea3eaed7b70be32a9bb382db05b906388f8c67 110079: 8578b17a5e535e1f7704e116e6d2b99b1dc32e1c v: v3 --- [refs] | 2 +- trunk/net/key/af_key.c | 30 +++++++++++++++++++----------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index a9c341b4f8e2..7bdae3c5c8c2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5dc121e9a7a8a3721cefeb07f3559f50fbedc67e +refs/heads/master: 0523820482dcb42784572ffd2296c2f08c275a2b diff --git a/trunk/net/key/af_key.c b/trunk/net/key/af_key.c index d628df97e02e..b7f5a1c353ee 100644 --- a/trunk/net/key/af_key.c +++ b/trunk/net/key/af_key.c @@ -73,22 +73,18 @@ static int pfkey_can_dump(struct sock *sk) return 0; } -static int pfkey_do_dump(struct pfkey_sock *pfk) +static void pfkey_terminate_dump(struct pfkey_sock *pfk) { - int rc; - - rc = pfk->dump.dump(pfk); - if (rc == -ENOBUFS) - return 0; - - pfk->dump.done(pfk); - pfk->dump.dump = NULL; - pfk->dump.done = NULL; - return rc; + if (pfk->dump.dump) { + pfk->dump.done(pfk); + pfk->dump.dump = NULL; + pfk->dump.done = NULL; + } } static void pfkey_sock_destruct(struct sock *sk) { + pfkey_terminate_dump(pfkey_sk(sk)); skb_queue_purge(&sk->sk_receive_queue); if (!sock_flag(sk, SOCK_DEAD)) { @@ -310,6 +306,18 @@ static int pfkey_broadcast(struct sk_buff *skb, gfp_t allocation, return err; } +static int pfkey_do_dump(struct pfkey_sock *pfk) +{ + int rc; + + rc = pfk->dump.dump(pfk); + if (rc == -ENOBUFS) + return 0; + + pfkey_terminate_dump(pfk); + return rc; +} + static inline void pfkey_hdr_dup(struct sadb_msg *new, struct sadb_msg *orig) { *new = *orig;