I think this almost works, but:

 > +    list_for_each_entry(cpriv, &priv->child_intfs, list) {
 > +            flags = cpriv->dev->flags;
 > +            new_flags = (flags & ~IFF_UP) | iffup_value;
 > +            if (flags != new_flags) {
 > +                    rtnl_lock();
 > +                    dev_change_flags(cpriv->dev, new_flags);
 > +                    rtnl_unlock();
 > +            }
 > +    }

taking flags outside of the rtnl lock looks dubious to me, since it
could change before we get to the dev_change_flags() call.

Looking at all this old code, I have to wonder whether anyone is
depending on bringing up the main interface also bringing up all the
subinterfaces ... the simplest solution would be to let the
subinterfaces be independent.  Is there anything wrong with just
deleting the code to bring subinterfaces up/down?

 - R.


_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to