|
|
@@ -2442,8 +2442,10 @@ static int key_pol_get_resp(struct sock *sk, struct xfrm_policy *xp, const struc
|
|
|
goto out;
|
|
|
}
|
|
|
err = pfkey_xfrm_policy2msg(out_skb, xp, dir);
|
|
|
- if (err < 0)
|
|
|
+ if (err < 0) {
|
|
|
+ kfree_skb(out_skb);
|
|
|
goto out;
|
|
|
+ }
|
|
|
|
|
|
out_hdr = (struct sadb_msg *) out_skb->data;
|
|
|
out_hdr->sadb_msg_version = hdr->sadb_msg_version;
|
|
|
@@ -2694,8 +2696,10 @@ static int dump_sp(struct xfrm_policy *xp, int dir, int count, void *ptr)
|
|
|
return PTR_ERR(out_skb);
|
|
|
|
|
|
err = pfkey_xfrm_policy2msg(out_skb, xp, dir);
|
|
|
- if (err < 0)
|
|
|
+ if (err < 0) {
|
|
|
+ kfree_skb(out_skb);
|
|
|
return err;
|
|
|
+ }
|
|
|
|
|
|
out_hdr = (struct sadb_msg *) out_skb->data;
|
|
|
out_hdr->sadb_msg_version = pfk->dump.msg_version;
|