for (i = 0; i < old_entries; i++) {
                        if (orig_ops[i] != &dummy_ops)
                                alloc_entries++;
+
+                       /* Restrict BPF hook type to force a unique priority, not
+                        * shared at attach time.
+                        *
+                        * This is mainly to avoid ordering issues between two
+                        * different bpf programs, this doesn't prevent a normal
+                        * hook at same priority as a bpf one (we don't want to
+                        * prevent defrag, conntrack, iptables etc from attaching).
+                        */
+                       if (reg->priority == orig_ops[i]->priority &&
+                           reg->hook_ops_type == NF_HOOK_OP_BPF)
+                               return ERR_PTR(-EBUSY);
                }
        }