if (priv->do_get_state)
                priv->do_get_state(dev, &state);
-       NLA_PUT_U32(skb, IFLA_CAN_STATE, state);
-       NLA_PUT(skb, IFLA_CAN_CTRLMODE, sizeof(cm), &cm);
-       NLA_PUT_U32(skb, IFLA_CAN_RESTART_MS, priv->restart_ms);
-       NLA_PUT(skb, IFLA_CAN_BITTIMING,
-               sizeof(priv->bittiming), &priv->bittiming);
-       NLA_PUT(skb, IFLA_CAN_CLOCK, sizeof(cm), &priv->clock);
-       if (priv->do_get_berr_counter && !priv->do_get_berr_counter(dev, &bec))
-               NLA_PUT(skb, IFLA_CAN_BERR_COUNTER, sizeof(bec), &bec);
-       if (priv->bittiming_const)
-               NLA_PUT(skb, IFLA_CAN_BITTIMING_CONST,
-                       sizeof(*priv->bittiming_const), priv->bittiming_const);
-
+       if (nla_put_u32(skb, IFLA_CAN_STATE, state) ||
+           nla_put(skb, IFLA_CAN_CTRLMODE, sizeof(cm), &cm) ||
+           nla_put_u32(skb, IFLA_CAN_RESTART_MS, priv->restart_ms) ||
+           nla_put(skb, IFLA_CAN_BITTIMING,
+                   sizeof(priv->bittiming), &priv->bittiming) ||
+           nla_put(skb, IFLA_CAN_CLOCK, sizeof(cm), &priv->clock) ||
+           (priv->do_get_berr_counter &&
+            !priv->do_get_berr_counter(dev, &bec) &&
+            nla_put(skb, IFLA_CAN_BERR_COUNTER, sizeof(bec), &bec)) ||
+           (priv->bittiming_const &&
+            nla_put(skb, IFLA_CAN_BITTIMING_CONST,
+                    sizeof(*priv->bittiming_const), priv->bittiming_const)))
+               goto nla_put_failure;
        return 0;
 
 nla_put_failure:
 {
        struct can_priv *priv = netdev_priv(dev);
 
-       NLA_PUT(skb, IFLA_INFO_XSTATS,
-               sizeof(priv->can_stats), &priv->can_stats);
-
+       if (nla_put(skb, IFLA_INFO_XSTATS,
+                   sizeof(priv->can_stats), &priv->can_stats))
+               goto nla_put_failure;
        return 0;
 
 nla_put_failure: