int ovr, int bind, bool rtnl_held,
                               struct netlink_ext_ack *extack)
 {
-       int ret = 0, err;
+       int ret = 0, tcfp_result = TC_ACT_OK, err, size;
        struct nlattr *tb[TCA_POLICE_MAX + 1];
        struct tc_police *parm;
        struct tcf_police *police;
        struct tc_action_net *tn = net_generic(net, police_net_id);
        struct tcf_police_params *new;
        bool exists = false;
-       int size;
 
        if (nla == NULL)
                return -EINVAL;
                goto failure;
        }
 
+       if (tb[TCA_POLICE_RESULT]) {
+               tcfp_result = nla_get_u32(tb[TCA_POLICE_RESULT]);
+               if (TC_ACT_EXT_CMP(tcfp_result, TC_ACT_GOTO_CHAIN)) {
+                       NL_SET_ERR_MSG(extack,
+                                      "goto chain not allowed on fallback");
+                       err = -EINVAL;
+                       goto failure;
+               }
+       }
+
        new = kzalloc(sizeof(*new), GFP_KERNEL);
        if (unlikely(!new)) {
                err = -ENOMEM;
        }
 
        /* No failure allowed after this point */
+       new->tcfp_result = tcfp_result;
        new->tcfp_mtu = parm->mtu;
        if (!new->tcfp_mtu) {
                new->tcfp_mtu = ~0;
        if (tb[TCA_POLICE_AVRATE])
                new->tcfp_ewma_rate = nla_get_u32(tb[TCA_POLICE_AVRATE]);
 
-       if (tb[TCA_POLICE_RESULT]) {
-               new->tcfp_result = nla_get_u32(tb[TCA_POLICE_RESULT]);
-               if (TC_ACT_EXT_CMP(new->tcfp_result, TC_ACT_GOTO_CHAIN)) {
-                       NL_SET_ERR_MSG(extack,
-                                      "goto chain not allowed on fallback");
-                       err = -EINVAL;
-                       goto failure;
-               }
-       }
-
        spin_lock_bh(&police->tcf_lock);
        spin_lock_bh(&police->tcfp_lock);
        police->tcfp_t_c = ktime_get_ns();