===== net/xfrm/xfrm_user.c 1.51 vs edited ===== --- 1.51/net/xfrm/xfrm_user.c 2004-09-12 21:51:43 +10:00 +++ edited/net/xfrm/xfrm_user.c 2004-09-25 08:22:05 +10:00 @@ -433,10 +433,17 @@ resp_skb = xfrm_state_netlink(skb, x, nlh->nlmsg_seq); if (IS_ERR(resp_skb)) { err = PTR_ERR(resp_skb); - } else { - err = netlink_unicast(xfrm_nl, resp_skb, - NETLINK_CB(skb).pid, MSG_DONTWAIT); + goto out_put; } + + err = pskb_expand_head(resp_skb, 0, skb->tail - skb->end, GFP_KERNEL); + if (err) + goto out_put; + + err = netlink_unicast(xfrm_nl, resp_skb, + NETLINK_CB(skb).pid, MSG_DONTWAIT); + +out_put: xfrm_state_put(x); out_noput: return err;