Hi Jakub, Series looks fine, just stumbled over one small thing here below.
On 01/12/2018 05:29 AM, Jakub Kicinski wrote: [...] > +bool bpf_offload_dev_match(struct bpf_prog *prog, struct bpf_map *map) > +{ > + struct bpf_offloaded_map *offmap; > + struct bpf_prog_offload *offload; > + bool ret; > + > + if (!!bpf_prog_is_dev_bound(prog->aux) != !!bpf_map_is_dev_bound(map)) > + return false; > + if (!bpf_prog_is_dev_bound(prog->aux)) > + return true; Should this not say 'false' if the prog has no offload_requested ... > + down_read(&bpf_devs_lock); > + offload = prog->aux->offload; > + offmap = map_to_offmap(map); > + > + ret = offload && offload->netdev == offmap->netdev; ... meaning we return true from bpf_offload_dev_match() only in the case when netdevs match? > + up_read(&bpf_devs_lock); > + > + return ret; > +} Thanks, Daniel