On Mon, Jun 18, 2018 at 7:04 AM, Hangbin Liu <liuhang...@gmail.com> wrote:
> @@ -94,10 +95,13 @@ static int ipvlan_set_port_mode(struct ipvl_port *port, 
> u16 nval)
>                         mdev->l3mdev_ops = NULL;
>                 }
>                 list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
> +                       flags = ipvlan->dev->flags;
>                         if (nval == IPVLAN_MODE_L3 || nval == IPVLAN_MODE_L3S)
> -                               ipvlan->dev->flags |= IFF_NOARP;
> +                               dev_change_flags(ipvlan->dev,
> +                                                flags | IFF_NOARP);
>                         else
> -                               ipvlan->dev->flags &= ~IFF_NOARP;
> +                               dev_change_flags(ipvlan->dev,
> +                                                flags & ~IFF_NOARP);

You need to check the return value of dev_change_flags().

Reply via email to