On Sun, Oct 09, 2022 at 07:40:44PM +0200, Hans J. Schultz wrote:
> diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
> index 74864dc46a7e..8008ceb45605 100644
> --- a/net/core/rtnetlink.c
> +++ b/net/core/rtnetlink.c
> @@ -4035,6 +4035,7 @@ int ndo_dflt_fdb_add(struct ndmsg *ndm,
>                    const unsigned char *addr, u16 vid,
>                    u16 flags)
>  {
> +     __u32 ext_flags = 0;
>       int err = -EINVAL;
>  
>       /* If aging addresses are supported device will need to
> @@ -4050,6 +4051,14 @@ int ndo_dflt_fdb_add(struct ndmsg *ndm,
>               return err;
>       }
>  
> +     if (tb[NDA_FLAGS_EXT])
> +             ext_flags = nla_get_u32(tb[NDA_FLAGS_EXT]);
> +
> +     if (ext_flags & NTF_EXT_LOCKED) {
> +             netdev_info(dev, "invalid flags given to default FDB 
> implementation\n");
> +             return err;
> +     }

I'm not sure it makes sense to deny specific flags in this case. It
might be better to just error out if NDA_FLAGS_EXT was specified.

> +
>       if (is_unicast_ether_addr(addr) || is_link_local_ether_addr(addr))
>               err = dev_uc_add_excl(dev, addr);
>       else if (is_multicast_ether_addr(addr))
> -- 
> 2.34.1
> 

Reply via email to