|
@@ -42,23 +42,23 @@ static struct sk_buff *dnrmg_build_message(struct sk_buff *rt_skb, int *errp)
|
|
|
size = NLMSG_SPACE(rt_skb->len);
|
|
|
size += NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg));
|
|
|
skb = alloc_skb(size, GFP_ATOMIC);
|
|
|
- if (!skb)
|
|
|
- goto nlmsg_failure;
|
|
|
+ if (!skb) {
|
|
|
+ *errp = -ENOMEM;
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
old_tail = skb->tail;
|
|
|
- nlh = NLMSG_PUT(skb, 0, 0, 0, size - sizeof(*nlh));
|
|
|
+ nlh = nlmsg_put(skb, 0, 0, 0, size - sizeof(*nlh), 0);
|
|
|
+ if (!nlh) {
|
|
|
+ kfree_skb(skb);
|
|
|
+ *errp = -ENOMEM;
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
rtm = (struct nf_dn_rtmsg *)NLMSG_DATA(nlh);
|
|
|
rtm->nfdn_ifindex = rt_skb->dev->ifindex;
|
|
|
ptr = NFDN_RTMSG(rtm);
|
|
|
skb_copy_from_linear_data(rt_skb, ptr, rt_skb->len);
|
|
|
nlh->nlmsg_len = skb->tail - old_tail;
|
|
|
return skb;
|
|
|
-
|
|
|
-nlmsg_failure:
|
|
|
- if (skb)
|
|
|
- kfree_skb(skb);
|
|
|
- *errp = -ENOMEM;
|
|
|
- net_err_ratelimited("dn_rtmsg: error creating netlink message\n");
|
|
|
- return NULL;
|
|
|
}
|
|
|
|
|
|
static void dnrmg_send_peer(struct sk_buff *skb)
|