netfilter: ipt_ULOG: Move away from NLMSG_PUT().
[firefly-linux-kernel-4.4.55.git] / net / ipv4 / netfilter / ipt_ULOG.c
index ba5756d20165ec0d5bb6d41359e219e03d9bdb8d..99b3f53f16a7259134833cabc9e1de17e5462d6c 100644 (file)
@@ -196,12 +196,15 @@ static void ipt_ulog_packet(unsigned int hooknum,
 
        pr_debug("qlen %d, qthreshold %Zu\n", ub->qlen, loginfo->qthreshold);
 
-       /* NLMSG_PUT contains a hidden goto nlmsg_failure !!! */
-       nlh = NLMSG_PUT(ub->skb, 0, ub->qlen, ULOG_NL_EVENT,
-                       sizeof(*pm)+copy_len);
+       nlh = nlmsg_put(ub->skb, 0, ub->qlen, ULOG_NL_EVENT,
+                       sizeof(*pm)+copy_len, 0);
+       if (!nlh) {
+               pr_debug("error during nlmsg_put\n");
+               goto out_unlock;
+       }
        ub->qlen++;
 
-       pm = NLMSG_DATA(nlh);
+       pm = nlmsg_data(nlh);
 
        /* We might not have a timestamp, get one */
        if (skb->tstamp.tv64 == 0)
@@ -261,13 +264,11 @@ static void ipt_ulog_packet(unsigned int hooknum,
                        nlh->nlmsg_type = NLMSG_DONE;
                ulog_send(groupnum);
        }
-
+out_unlock:
        spin_unlock_bh(&ulog_lock);
 
        return;
 
-nlmsg_failure:
-       pr_debug("error during NLMSG_PUT\n");
 alloc_failure:
        pr_debug("Error building netlink message\n");
        spin_unlock_bh(&ulog_lock);