Lorenzo Bianconi wrote: > From: Toke Hoiland-Jorgensen <toke@xxxxxxxxxx> > > The check for tail call map compatibility ensures that tail calls only > happen between maps of the same type. To ensure backwards compatibility for > XDP multi-buffer we need a similar type of check for cpumap and devmap > programs, so move the state from bpf_array_aux into bpf_map, add xdp_mb to > the check, and apply the same check to cpumap and devmap. > > Co-developed-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx> > Signed-off-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx> > Signed-off-by: Toke Hoiland-Jorgensen <toke@xxxxxxxxxx> > --- ... > -bool bpf_prog_array_compatible(struct bpf_array *array, const struct bpf_prog *fp); > +static inline bool map_type_contains_progs(struct bpf_map *map) Maybe map_type_check_needed()? Just noticing that devmap doesn't contain progs. > +{ > + return map->map_type == BPF_MAP_TYPE_PROG_ARRAY || > + map->map_type == BPF_MAP_TYPE_DEVMAP || > + map->map_type == BPF_MAP_TYPE_CPUMAP; > +} > + > +bool bpf_prog_map_compatible(struct bpf_map *map, const struct bpf_prog *fp); > int bpf_prog_calc_tag(struct bpf_prog *fp); Otherwise LGTM.