Message ID | 20240814090811.35343-1-zhoufeng.zf@bytedance.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: Don't allow to attach xdp if bond slave device's upper already has a program | expand |
Feng zhou <zhoufeng.zf@bytedance.com> writes: > From: Feng Zhou <zhoufeng.zf@bytedance.com> > > Cannot attach when an upper device already has a program, This > restriction is only for bond's slave devices, and should not be > accidentally injured for devices like eth0 and vxlan0. > > Signed-off-by: Feng Zhou <zhoufeng.zf@bytedance.com> Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
On 8/14/24 11:08, Feng zhou wrote: > From: Feng Zhou <zhoufeng.zf@bytedance.com> > > Cannot attach when an upper device already has a program, This > restriction is only for bond's slave devices, and should not be > accidentally injured for devices like eth0 and vxlan0. > > Signed-off-by: Feng Zhou <zhoufeng.zf@bytedance.com> > --- > net/core/dev.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/net/core/dev.c b/net/core/dev.c > index 6ea1d20676fb..e1f87662376a 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -9501,10 +9501,12 @@ static int dev_xdp_attach(struct net_device *dev, struct netlink_ext_ack *extack > } > > /* don't allow if an upper device already has a program */ > - netdev_for_each_upper_dev_rcu(dev, upper, iter) { > - if (dev_xdp_prog_count(upper) > 0) { > - NL_SET_ERR_MSG(extack, "Cannot attach when an upper device already has a program"); > - return -EEXIST; > + if (netif_is_bond_slave(dev)) { I think we want to consider even team port devices. Thanks, Paolo
Thu, Aug 15, 2024 at 01:18:33PM CEST, pabeni@redhat.com wrote: >On 8/14/24 11:08, Feng zhou wrote: >> From: Feng Zhou <zhoufeng.zf@bytedance.com> >> >> Cannot attach when an upper device already has a program, This >> restriction is only for bond's slave devices, and should not be >> accidentally injured for devices like eth0 and vxlan0. >> >> Signed-off-by: Feng Zhou <zhoufeng.zf@bytedance.com> >> --- >> net/core/dev.c | 10 ++++++---- >> 1 file changed, 6 insertions(+), 4 deletions(-) >> >> diff --git a/net/core/dev.c b/net/core/dev.c >> index 6ea1d20676fb..e1f87662376a 100644 >> --- a/net/core/dev.c >> +++ b/net/core/dev.c >> @@ -9501,10 +9501,12 @@ static int dev_xdp_attach(struct net_device *dev, struct netlink_ext_ack *extack >> } >> /* don't allow if an upper device already has a program */ >> - netdev_for_each_upper_dev_rcu(dev, upper, iter) { >> - if (dev_xdp_prog_count(upper) > 0) { >> - NL_SET_ERR_MSG(extack, "Cannot attach when an upper device already has a program"); >> - return -EEXIST; >> + if (netif_is_bond_slave(dev)) { > >I think we want to consider even team port devices. netif_is_lag_port() > >Thanks, > >Paolo >
在 2024/8/15 20:36, Jiri Pirko 写道: > Thu, Aug 15, 2024 at 01:18:33PM CEST, pabeni@redhat.com wrote: >> On 8/14/24 11:08, Feng zhou wrote: >>> From: Feng Zhou <zhoufeng.zf@bytedance.com> >>> >>> Cannot attach when an upper device already has a program, This >>> restriction is only for bond's slave devices, and should not be >>> accidentally injured for devices like eth0 and vxlan0. >>> >>> Signed-off-by: Feng Zhou <zhoufeng.zf@bytedance.com> >>> --- >>> net/core/dev.c | 10 ++++++---- >>> 1 file changed, 6 insertions(+), 4 deletions(-) >>> >>> diff --git a/net/core/dev.c b/net/core/dev.c >>> index 6ea1d20676fb..e1f87662376a 100644 >>> --- a/net/core/dev.c >>> +++ b/net/core/dev.c >>> @@ -9501,10 +9501,12 @@ static int dev_xdp_attach(struct net_device *dev, struct netlink_ext_ack *extack >>> } >>> /* don't allow if an upper device already has a program */ >>> - netdev_for_each_upper_dev_rcu(dev, upper, iter) { >>> - if (dev_xdp_prog_count(upper) > 0) { >>> - NL_SET_ERR_MSG(extack, "Cannot attach when an upper device already has a program"); >>> - return -EEXIST; >>> + if (netif_is_bond_slave(dev)) { >> >> I think we want to consider even team port devices. > > netif_is_lag_port() > > Will do, thanks. >> >> Thanks, >> >> Paolo >>
diff --git a/net/core/dev.c b/net/core/dev.c index 6ea1d20676fb..e1f87662376a 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -9501,10 +9501,12 @@ static int dev_xdp_attach(struct net_device *dev, struct netlink_ext_ack *extack } /* don't allow if an upper device already has a program */ - netdev_for_each_upper_dev_rcu(dev, upper, iter) { - if (dev_xdp_prog_count(upper) > 0) { - NL_SET_ERR_MSG(extack, "Cannot attach when an upper device already has a program"); - return -EEXIST; + if (netif_is_bond_slave(dev)) { + netdev_for_each_upper_dev_rcu(dev, upper, iter) { + if (dev_xdp_prog_count(upper) > 0) { + NL_SET_ERR_MSG(extack, "Cannot attach when an upper device already has a program"); + return -EEXIST; + } } }