On Sat, Jun 10, 2006 at 05:40:39PM +0100, Daniel Drake ([EMAIL PROTECTED])
wrote:
> Evgeniy Polyakov wrote:
> >On Sat, Jun 10, 2006 at 01:42:21PM +0100, Daniel Drake ([EMAIL PROTECTED])
> >wrote:
> >>Herbert Xu wrote:
> >>>Correct. All callers of hard_start_xmit do so under RCU or equivalent
> >>>locks so they must be complete by the time synchronize_net() returns.
> >>Does this hold for other operations? Such as:
> >>
> >>- The netdev->set_mac_address function
> >>- The wireless ioctl's (SIOCSIWESSID, etc)
> >>
> >>Are these also guaranteed to have returned after synchronize_net()?
> >
> >None of above calls is protected with RCU (except set_mac_address()
> >called through ioctl, which is performed under read_lock which disables
> >preemtption), so they still can run after synchronize_net().
> >
> >But if you are talking about synchronize_net() inside
> >unregister_netdevice(), which is called from
> >usbnet_disconnect()->unregister_netdev(), than it is safe.
>
> Are you referring to set_mac_address in the above statement, or both
> set_mac_address *and* the wireless ioctls?
oth calls have the same nature actually, and both calls are not
protected by RCU.
> I'm basically just looking to clarify that after unregister_netdev has
> completed, none of the following can be still in progress on any CPU,
> and none of the following can be triggered again:
>
> 1. hard_start_xmit handler
> 2. set_mac_address handler
> 3. WX ioctls
>
> It's logical that this is the case, but the code doesn't make that very
> clear (and would certainly result in many potential ZD1211 races if this
> was not the case).
set_mac_address() and wireless ioctls are protected by rtnl.
unregister_netdevice() is called under rtnl protection too.
But hard_start_xmit() is not protected (and can not be protected in all
situations) by sleeping semaphore (like rtnl),
so instead it runs under RCU, which is synchronized in synchronize_net()
inside unregister_netdevice().
> Daniel
--
Evgeniy Polyakov
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html