lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Mon, 24 Sep 2007 15:56:46 +0200
From:	Moni Shoua <monisonlists@...il.com>
To:	Roland Dreier <rdreier@...co.com>
CC:	Jay Vosburgh <fubar@...ibm.com>,
	OpenFabrics General <general@...ts.openfabrics.org>,
	netdev@...r.kernel.org
Subject: Re: [ofa-general] Re: [PATCH V5 2/11] IB/ipoib: Notify the world
 before	doing unregister

Roland Dreier wrote:
>  > The action in bonding to a detach of slave is to unregister the master (see patch 10).
>  > This can't be done from the context of unregister_netdevice itself (it is protected by rtnl_lock).
> 
> I'm confused.  Your patch has:
> 
>  > +		ipoib_slave_detach(cpriv->dev);
>  >  		unregister_netdev(cpriv->dev);
> 
> And ipoib_slave_detach() is:
> 
>  > +static inline void ipoib_slave_detach(struct net_device *dev)
>  > +{
>  > +	rtnl_lock();
>  > +	netdev_slave_detach(dev);
>  > +	rtnl_unlock();
>  > +}
> 
> so you are calling netdev_slave_detach() with the rtnl lock held.
> Why can't you make the same call from the start of unregister_netdevice()?
> 
> Anyway, if the rtnl lock is a problem, can you just add the call to
> netdev_slave_detach() to unregister_netdev() before it takes the rtnl lock?
> 
>  - R.
> 

Your comment made me do a little rethinking.
In bonding, device is released by calling unregister_netdevice() that doesn't 
take the rtnl_lock (unlike unregister_netdev() that does). I guess that this made me 
confused to think that this is not possible. So, I guess I could put 
the detach notification in unregister_netedev() and the reaction to the notification 
in the bonding driver would not block.
However, I looked one more time at the code of unregister_netdevice() and found out that
nothing prevents from calling unregister_netdevice() again when the notification NETDEV_GOING_DOWN
is sent. I tried that and it works.
I have a new set of patches without sending a slave detach and I will send it soon.

Thanks for the comment Roland. It makes this patch simpler.

I'd also like to give a credit to Jay for the idea of using NETDEV_GOING_DOWN notification
instead of NETDEV_CHANGE+IFF_SLAVE_DETACH. He suggested it a while ago but I wrongly thought that
it wouldn't work.

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ