diff options
author | Steve French <sfrench@us.ibm.com> | 2006-06-20 20:36:38 +0000 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2006-06-20 20:36:38 +0000 |
commit | 75ba632a01d4dc70d0a0f3a92b5ec9b4a3644b2d (patch) | |
tree | c2f02ee30609d0d69308b4ca80d68d02a5f85552 /net/key/af_key.c | |
parent | 0fd1ffe0633b4b039b343b753598e6df435e034d (diff) | |
parent | 25f42b6af09e34c3f92107b36b5aa6edc2fdba2f (diff) | |
download | kernel_samsung_smdk4412-75ba632a01d4dc70d0a0f3a92b5ec9b4a3644b2d.zip kernel_samsung_smdk4412-75ba632a01d4dc70d0a0f3a92b5ec9b4a3644b2d.tar.gz kernel_samsung_smdk4412-75ba632a01d4dc70d0a0f3a92b5ec9b4a3644b2d.tar.bz2 |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Diffstat (limited to 'net/key/af_key.c')
-rw-r--r-- | net/key/af_key.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/net/key/af_key.c b/net/key/af_key.c index 8595822..d5e2121 100644 --- a/net/key/af_key.c +++ b/net/key/af_key.c @@ -1454,21 +1454,23 @@ static int pfkey_delete(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h if (x == NULL) return -ESRCH; + if ((err = security_xfrm_state_delete(x))) + goto out; + if (xfrm_state_kern(x)) { - xfrm_state_put(x); - return -EPERM; + err = -EPERM; + goto out; } err = xfrm_state_delete(x); - if (err < 0) { - xfrm_state_put(x); - return err; - } + if (err < 0) + goto out; c.seq = hdr->sadb_msg_seq; c.pid = hdr->sadb_msg_pid; c.event = XFRM_MSG_DELSA; km_state_notify(x, &c); +out: xfrm_state_put(x); return err; @@ -2274,11 +2276,14 @@ static int pfkey_spddelete(struct sock *sk, struct sk_buff *skb, struct sadb_msg err = 0; + if ((err = security_xfrm_policy_delete(xp))) + goto out; c.seq = hdr->sadb_msg_seq; c.pid = hdr->sadb_msg_pid; c.event = XFRM_MSG_DELPOLICY; km_policy_notify(xp, pol->sadb_x_policy_dir-1, &c); +out: xfrm_pol_put(xp); return err; } |