From 95c714a051e58a1a481fd3ead256c14855c784cc Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Sun, 20 Jan 2008 17:24:29 -0800 Subject: [PATCH] --- yaml --- r: 75619 b: refs/heads/master c: d4782c323d10d3698b71b6a6b3c7bdad33824658 h: refs/heads/master i: 75617: 2bd75f65333b0a740c59377ea3fe0383af07dc99 75615: 0c4f7c1539a25de5477e66d79b1d99308b3dd67e v: v3 --- [refs] | 2 +- trunk/net/key/af_key.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 3b976108d57a..90a0ad9e1b2f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 421c991483a6e52091cd2120c007cbc220d669ae +refs/heads/master: d4782c323d10d3698b71b6a6b3c7bdad33824658 diff --git a/trunk/net/key/af_key.c b/trunk/net/key/af_key.c index 26d5e63c4cc5..76dcd882f87b 100644 --- a/trunk/net/key/af_key.c +++ b/trunk/net/key/af_key.c @@ -3593,27 +3593,29 @@ static int pfkey_send_migrate(struct xfrm_selector *sel, u8 dir, u8 type, /* old ipsecrequest */ int mode = pfkey_mode_from_xfrm(mp->mode); if (mode < 0) - return -EINVAL; + goto err; if (set_ipsecrequest(skb, mp->proto, mode, (mp->reqid ? IPSEC_LEVEL_UNIQUE : IPSEC_LEVEL_REQUIRE), mp->reqid, mp->old_family, - &mp->old_saddr, &mp->old_daddr) < 0) { - return -EINVAL; - } + &mp->old_saddr, &mp->old_daddr) < 0) + goto err; /* new ipsecrequest */ if (set_ipsecrequest(skb, mp->proto, mode, (mp->reqid ? IPSEC_LEVEL_UNIQUE : IPSEC_LEVEL_REQUIRE), mp->reqid, mp->new_family, - &mp->new_saddr, &mp->new_daddr) < 0) { - return -EINVAL; - } + &mp->new_saddr, &mp->new_daddr) < 0) + goto err; } /* broadcast migrate message to sockets */ pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_ALL, NULL); return 0; + +err: + kfree_skb(skb); + return -EINVAL; } #else static int pfkey_send_migrate(struct xfrm_selector *sel, u8 dir, u8 type,