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)