aboutsummaryrefslogtreecommitdiffstats
path: root/net/key/af_key.c
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2006-06-20 20:36:38 +0000
committerSteve French <sfrench@us.ibm.com>2006-06-20 20:36:38 +0000
commit75ba632a01d4dc70d0a0f3a92b5ec9b4a3644b2d (patch)
treec2f02ee30609d0d69308b4ca80d68d02a5f85552 /net/key/af_key.c
parent0fd1ffe0633b4b039b343b753598e6df435e034d (diff)
parent25f42b6af09e34c3f92107b36b5aa6edc2fdba2f (diff)
downloadkernel_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.c17
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;
}