attr->prog_type != BPF_PROG_TYPE_XDP)
                return -EINVAL;
 
-       if (attr->prog_flags & ~BPF_F_XDP_DEV_BOUND_ONLY)
+       if (attr->prog_flags & ~(BPF_F_XDP_DEV_BOUND_ONLY | BPF_F_XDP_HAS_FRAGS))
+               return -EINVAL;
+
+       /* Frags are allowed only if program is dev-bound-only, but not
+        * if it is requesting bpf offload.
+        */
+       if (attr->prog_flags & BPF_F_XDP_HAS_FRAGS &&
+           !(attr->prog_flags & BPF_F_XDP_DEV_BOUND_ONLY))
                return -EINVAL;
 
        if (attr->prog_type == BPF_PROG_TYPE_SCHED_CLS &&