Message ID | 20171120045522.2188-6-jakub.kicinski@netronome.com |
---|---|
State | Changes Requested, archived |
Delegated to: | BPF Maintainers |
Headers | show |
Series | bpf: offload: check netdev pointer in the drivers and namespace trouble | expand |
On 11/19/17 9:55 PM, Jakub Kicinski wrote: > diff --git a/net/core/dev.c b/net/core/dev.c > index 09525a27319c..21de2d37a0ba 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -7143,6 +7143,13 @@ int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack, > bpf_op == ops->ndo_bpf); > if (IS_ERR(prog)) > return PTR_ERR(prog); > + > + if (!(flags & XDP_FLAGS_HW_MODE) && > + bpf_prog_is_dev_bound(prog->aux)) { > + NL_SET_ERR_MSG_MOD(extack, "using device-bound program without HW_MODE flag not supported"); I don't see dev_change_xdp_fd called by device drivers, so that should just be NL_SET_ERR_MSG. Also, "is not supported" sounds better to me than just "not supported".
On Mon, 20 Nov 2017 07:36:39 -0700, David Ahern wrote: > On 11/19/17 9:55 PM, Jakub Kicinski wrote: > > diff --git a/net/core/dev.c b/net/core/dev.c > > index 09525a27319c..21de2d37a0ba 100644 > > --- a/net/core/dev.c > > +++ b/net/core/dev.c > > @@ -7143,6 +7143,13 @@ int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack, > > bpf_op == ops->ndo_bpf); > > if (IS_ERR(prog)) > > return PTR_ERR(prog); > > + > > + if (!(flags & XDP_FLAGS_HW_MODE) && > > + bpf_prog_is_dev_bound(prog->aux)) { > > + NL_SET_ERR_MSG_MOD(extack, "using device-bound program without HW_MODE flag not supported"); > > I don't see dev_change_xdp_fd called by device drivers, so that should > just be NL_SET_ERR_MSG. Also, "is not supported" sounds better to me > than just "not supported". Thanks, I'll give others a couple more hours and respin!
Hi Jakub, On 11/20/2017 11:02 PM, Jakub Kicinski wrote: > On Mon, 20 Nov 2017 07:36:39 -0700, David Ahern wrote: >> On 11/19/17 9:55 PM, Jakub Kicinski wrote: >>> diff --git a/net/core/dev.c b/net/core/dev.c >>> index 09525a27319c..21de2d37a0ba 100644 >>> --- a/net/core/dev.c >>> +++ b/net/core/dev.c >>> @@ -7143,6 +7143,13 @@ int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack, >>> bpf_op == ops->ndo_bpf); >>> if (IS_ERR(prog)) >>> return PTR_ERR(prog); >>> + >>> + if (!(flags & XDP_FLAGS_HW_MODE) && >>> + bpf_prog_is_dev_bound(prog->aux)) { >>> + NL_SET_ERR_MSG_MOD(extack, "using device-bound program without HW_MODE flag not supported"); >> >> I don't see dev_change_xdp_fd called by device drivers, so that should >> just be NL_SET_ERR_MSG. Also, "is not supported" sounds better to me >> than just "not supported". > > Thanks, I'll give others a couple more hours and respin! The rest of the series looks good to me, please respin with the minor changes requested. Thanks, Daniel
diff --git a/net/core/dev.c b/net/core/dev.c index 09525a27319c..21de2d37a0ba 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -7143,6 +7143,13 @@ int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack, bpf_op == ops->ndo_bpf); if (IS_ERR(prog)) return PTR_ERR(prog); + + if (!(flags & XDP_FLAGS_HW_MODE) && + bpf_prog_is_dev_bound(prog->aux)) { + NL_SET_ERR_MSG_MOD(extack, "using device-bound program without HW_MODE flag not supported"); + bpf_prog_put(prog); + return -EINVAL; + } } err = dev_xdp_install(dev, bpf_op, extack, flags, prog);