IPCTNL_MSG_CT_NEW, 1, ct);
        ip_conntrack_put(ct);
        if (err <= 0)
-               goto out;
+               goto free;
 
        err = netlink_unicast(ctnl, skb2, NETLINK_CB(skb).pid, MSG_DONTWAIT);
        if (err < 0)
        DEBUGP("leaving\n");
        return 0;
 
+free:
+       kfree_skb(skb2);
 out:
-       if (skb2)
-               kfree_skb(skb2);
        return -1;
 }
 
                                      nlh->nlmsg_seq, IPCTNL_MSG_EXP_NEW,
                                      1, exp);
        if (err <= 0)
-               goto out;
+               goto free;
 
        ip_conntrack_expect_put(exp);
 
-       err = netlink_unicast(ctnl, skb2, NETLINK_CB(skb).pid, MSG_DONTWAIT);
-       if (err < 0)
-               goto free;
-
-       return err;
+       return netlink_unicast(ctnl, skb2, NETLINK_CB(skb).pid, MSG_DONTWAIT);
 
+free:
+       kfree_skb(skb2);
 out:
        ip_conntrack_expect_put(exp);
-free:
-       if (skb2)
-               kfree_skb(skb2);
        return err;
 }