Commit 
053c095a82cf ("netlink: make nlmsg_end() and genlmsg_end()
void") didn't catch all of the cases where callers were breaking out
on the return value being equal to zero, which they no longer should
when zero means success.
Fix all such cases.
Reported-by: Marcel Holtmann <marcel@holtmann.org>
Reported-by: Scott Feldman <sfeldma@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
 
 
                if (neightbl_fill_info(skb, tbl, NETLINK_CB(cb->skb).portid,
                                       cb->nlh->nlmsg_seq, RTM_NEWNEIGHTBL,
-                                      NLM_F_MULTI) <= 0)
+                                      NLM_F_MULTI) < 0)
                        break;
 
                nidx = 0;
                                                     NETLINK_CB(cb->skb).portid,
                                                     cb->nlh->nlmsg_seq,
                                                     RTM_NEWNEIGHTBL,
-                                                    NLM_F_MULTI) <= 0)
+                                                    NLM_F_MULTI) < 0)
                                goto out;
                next:
                        nidx++;
                        if (neigh_fill_info(skb, n, NETLINK_CB(cb->skb).portid,
                                            cb->nlh->nlmsg_seq,
                                            RTM_NEWNEIGH,
-                                           NLM_F_MULTI) <= 0) {
+                                           NLM_F_MULTI) < 0) {
                                rc = -1;
                                goto out;
                        }
                        if (pneigh_fill_info(skb, n, NETLINK_CB(cb->skb).portid,
                                            cb->nlh->nlmsg_seq,
                                            RTM_NEWNEIGH,
-                                           NLM_F_MULTI, tbl) <= 0) {
+                                           NLM_F_MULTI, tbl) < 0) {
                                read_unlock_bh(&tbl->lock);
                                rc = -1;
                                goto out;
 
                         */
                        WARN_ON((err == -EMSGSIZE) && (skb->len == 0));
 
-                       if (err <= 0)
+                       if (err < 0)
                                goto out;
 
                        nl_dump_check_consistent(cb, nlmsg_hdr(skb));
 
                rt->rt_flags |= RTCF_NOTIFY;
 
        err = dn_rt_fill_info(skb, NETLINK_CB(in_skb).portid, nlh->nlmsg_seq, RTM_NEWROUTE, 0, 0);
-
-       if (err == 0)
-               goto out_free;
        if (err < 0) {
                err = -EMSGSIZE;
                goto out_free;
                        skb_dst_set(skb, dst_clone(&rt->dst));
                        if (dn_rt_fill_info(skb, NETLINK_CB(cb->skb).portid,
                                        cb->nlh->nlmsg_seq, RTM_NEWROUTE,
-                                       1, NLM_F_MULTI) <= 0) {
+                                       1, NLM_F_MULTI) < 0) {
                                skb_dst_drop(skb);
                                rcu_read_unlock_bh();
                                goto done;
 
                                                      cb->nlh->nlmsg_seq,
                                                      RTM_NEWNETCONF,
                                                      NLM_F_MULTI,
-                                                     -1) <= 0) {
+                                                     -1) < 0) {
                                rcu_read_unlock();
                                goto done;
                        }
                                              NETLINK_CB(cb->skb).portid,
                                              cb->nlh->nlmsg_seq,
                                              RTM_NEWNETCONF, NLM_F_MULTI,
-                                             -1) <= 0)
+                                             -1) < 0)
                        goto done;
                else
                        h++;
                                              NETLINK_CB(cb->skb).portid,
                                              cb->nlh->nlmsg_seq,
                                              RTM_NEWNETCONF, NLM_F_MULTI,
-                                             -1) <= 0)
+                                             -1) < 0)
                        goto done;
                else
                        h++;
 
        err = rt_fill_info(net, dst, src, &fl4, skb,
                           NETLINK_CB(in_skb).portid, nlh->nlmsg_seq,
                           RTM_NEWROUTE, 0, 0);
-       if (err <= 0)
+       if (err < 0)
                goto errout_free;
 
        err = rtnl_unicast(skb, net, NETLINK_CB(in_skb).portid);
 
                                goto cont;
 
                        if (in6_dump_addrs(idev, skb, cb, type,
-                                          s_ip_idx, &ip_idx) <= 0)
+                                          s_ip_idx, &ip_idx) < 0)
                                goto done;
 cont:
                        idx++;