u32 *flags = nlmsg_data(nlh);
        u32 sportid = NETLINK_CB(skb).portid;
        u32 seq = nlh->nlmsg_seq;
+       int err;
 
        r_skb = nlmsg_new(xfrm_spdinfo_msgsize(), GFP_ATOMIC);
        if (r_skb == NULL)
                return -ENOMEM;
 
-       if (build_spdinfo(r_skb, net, sportid, seq, *flags) < 0)
-               BUG();
+       err = build_spdinfo(r_skb, net, sportid, seq, *flags);
+       BUG_ON(err < 0);
 
        return nlmsg_unicast(net->xfrm.nlsk, r_skb, sportid);
 }
        u32 *flags = nlmsg_data(nlh);
        u32 sportid = NETLINK_CB(skb).portid;
        u32 seq = nlh->nlmsg_seq;
+       int err;
 
        r_skb = nlmsg_new(xfrm_sadinfo_msgsize(), GFP_ATOMIC);
        if (r_skb == NULL)
                return -ENOMEM;
 
-       if (build_sadinfo(r_skb, net, sportid, seq, *flags) < 0)
-               BUG();
+       err = build_sadinfo(r_skb, net, sportid, seq, *flags);
+       BUG_ON(err < 0);
 
        return nlmsg_unicast(net->xfrm.nlsk, r_skb, sportid);
 }
        c.seq = nlh->nlmsg_seq;
        c.portid = nlh->nlmsg_pid;
 
-       if (build_aevent(r_skb, x, &c) < 0)
-               BUG();
+       err = build_aevent(r_skb, x, &c);
+       BUG_ON(err < 0);
+
        err = nlmsg_unicast(net->xfrm.nlsk, r_skb, NETLINK_CB(skb).portid);
        spin_unlock_bh(&x->lock);
        xfrm_state_put(x);
 {
        struct net *net = &init_net;
        struct sk_buff *skb;
+       int err;
 
        skb = nlmsg_new(xfrm_migrate_msgsize(num_migrate, !!k, !!encap),
                        GFP_ATOMIC);
                return -ENOMEM;
 
        /* build migrate */
-       if (build_migrate(skb, m, num_migrate, k, sel, encap, dir, type) < 0)
-               BUG();
+       err = build_migrate(skb, m, num_migrate, k, sel, encap, dir, type);
+       BUG_ON(err < 0);
 
        return xfrm_nlmsg_multicast(net, skb, 0, XFRMNLGRP_MIGRATE);
 }
 {
        struct net *net = xs_net(x);
        struct sk_buff *skb;
+       int err;
 
        skb = nlmsg_new(xfrm_aevent_msgsize(x), GFP_ATOMIC);
        if (skb == NULL)
                return -ENOMEM;
 
-       if (build_aevent(skb, x, c) < 0)
-               BUG();
+       err = build_aevent(skb, x, c);
+       BUG_ON(err < 0);
 
        return xfrm_nlmsg_multicast(net, skb, 0, XFRMNLGRP_AEVENTS);
 }
 {
        struct net *net = xs_net(x);
        struct sk_buff *skb;
+       int err;
 
        skb = nlmsg_new(xfrm_acquire_msgsize(x, xp), GFP_ATOMIC);
        if (skb == NULL)
                return -ENOMEM;
 
-       if (build_acquire(skb, x, xt, xp) < 0)
-               BUG();
+       err = build_acquire(skb, x, xt, xp);
+       BUG_ON(err < 0);
 
        return xfrm_nlmsg_multicast(net, skb, 0, XFRMNLGRP_ACQUIRE);
 }
 {
        struct net *net = xp_net(xp);
        struct sk_buff *skb;
+       int err;
 
        skb = nlmsg_new(xfrm_polexpire_msgsize(xp), GFP_ATOMIC);
        if (skb == NULL)
                return -ENOMEM;
 
-       if (build_polexpire(skb, xp, dir, c) < 0)
-               BUG();
+       err = build_polexpire(skb, xp, dir, c);
+       BUG_ON(err < 0);
 
        return xfrm_nlmsg_multicast(net, skb, 0, XFRMNLGRP_EXPIRE);
 }
                            struct xfrm_selector *sel, xfrm_address_t *addr)
 {
        struct sk_buff *skb;
+       int err;
 
        skb = nlmsg_new(xfrm_report_msgsize(), GFP_ATOMIC);
        if (skb == NULL)
                return -ENOMEM;
 
-       if (build_report(skb, proto, sel, addr) < 0)
-               BUG();
+       err = build_report(skb, proto, sel, addr);
+       BUG_ON(err < 0);
 
        return xfrm_nlmsg_multicast(net, skb, 0, XFRMNLGRP_REPORT);
 }
 {
        struct net *net = xs_net(x);
        struct sk_buff *skb;
+       int err;
 
        if (x->id.proto != IPPROTO_ESP)
                return -EINVAL;
        if (skb == NULL)
                return -ENOMEM;
 
-       if (build_mapping(skb, x, ipaddr, sport) < 0)
-               BUG();
+       err = build_mapping(skb, x, ipaddr, sport);
+       BUG_ON(err < 0);
 
        return xfrm_nlmsg_multicast(net, skb, 0, XFRMNLGRP_MAPPING);
 }