/* If BPF JIT was not enabled then we must fall back to
         * the interpreter.
         */
-       if (!bpf_jit_enable)
+       if (!prog->jit_requested)
                return orig_prog;
 
        /* If constant blinding was enabled and we failed during blinding
 
        int image_size;
        u8 *image_ptr;
 
-       if (!bpf_jit_enable)
+       if (!prog->jit_requested)
                return orig_prog;
 
        tmp = bpf_jit_blind_constants(prog);
 
        unsigned int image_size;
        u8 *image_ptr;
 
-       if (!bpf_jit_enable || !cpu_has_mips64r2)
+       if (!prog->jit_requested || !cpu_has_mips64r2)
                return prog;
 
        tmp = bpf_jit_blind_constants(prog);
 
        struct bpf_prog *tmp_fp;
        bool bpf_blinded = false;
 
-       if (!bpf_jit_enable)
+       if (!fp->jit_requested)
                return org_fp;
 
        tmp_fp = bpf_jit_blind_constants(org_fp);
 
        struct bpf_jit jit;
        int pass;
 
-       if (!bpf_jit_enable)
+       if (!fp->jit_requested)
                return orig_fp;
 
        tmp = bpf_jit_blind_constants(fp);
 
        u8 *image_ptr;
        int pass;
 
-       if (!bpf_jit_enable)
+       if (!prog->jit_requested)
                return orig_prog;
 
        tmp = bpf_jit_blind_constants(prog);
 
        int pass;
        int i;
 
-       if (!bpf_jit_enable)
+       if (!prog->jit_requested)
                return orig_prog;
 
        tmp = bpf_jit_blind_constants(prog);
 
 struct bpf_prog {
        u16                     pages;          /* Number of allocated pages */
        u16                     jited:1,        /* Is our filter JIT'ed? */
+                               jit_requested:1,/* archs need to JIT the prog */
                                locked:1,       /* Program image locked? */
                                gpl_compatible:1, /* Is filter GPL compatible? */
                                cb_access:1,    /* Is control block accessed? */
        return fp->jited && bpf_jit_is_ebpf();
 }
 
-static inline bool bpf_jit_blinding_enabled(void)
+static inline bool bpf_jit_blinding_enabled(struct bpf_prog *prog)
 {
        /* These are the prerequisites, should someone ever have the
         * idea to call blinding outside of them, we make sure to
         */
        if (!bpf_jit_is_ebpf())
                return false;
-       if (!bpf_jit_enable)
+       if (!prog->jit_requested)
                return false;
        if (!bpf_jit_harden)
                return false;
 
        fp->pages = size / PAGE_SIZE;
        fp->aux = aux;
        fp->aux->prog = fp;
+       fp->jit_requested = ebpf_jit_enabled();
 
        INIT_LIST_HEAD_RCU(&fp->aux->ksym_lnode);
 
        struct bpf_insn *insn;
        int i, rewritten;
 
-       if (!bpf_jit_blinding_enabled())
+       if (!bpf_jit_blinding_enabled(prog))
                return prog;
 
        clone = bpf_prog_clone_create(prog, GFP_USER);
 
                /* BPF_EMIT_CALL() assumptions in some of the map_gen_lookup
                 * handlers are currently limited to 64 bit only.
                 */
-               if (ebpf_jit_enabled() && BITS_PER_LONG == 64 &&
+               if (prog->jit_requested && BITS_PER_LONG == 64 &&
                    insn->imm == BPF_FUNC_map_lookup_elem) {
                        map_ptr = env->insn_aux_data[i + delta].map_ptr;
                        if (map_ptr == BPF_MAP_PTR_POISON ||