net: RCU conversion of dev_getbyhwaddr() and arp_ioctl()
authorEric Dumazet <eric.dumazet@gmail.com>
Sun, 5 Dec 2010 01:23:53 +0000 (01:23 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 8 Dec 2010 18:07:24 +0000 (10:07 -0800)
commit941666c2e3e0f9f6a1cb5808d02352d445bd702c
tree389a773580ef22908391cc71f98982b03de62804
parenta2d4b65d477aad1fe8c7218781a031fa9cf5abfc
net: RCU conversion of dev_getbyhwaddr() and arp_ioctl()

Le dimanche 05 décembre 2010 à 09:19 +0100, Eric Dumazet a écrit :

> Hmm..
>
> If somebody can explain why RTNL is held in arp_ioctl() (and therefore
> in arp_req_delete()), we might first remove RTNL use in arp_ioctl() so
> that your patch can be applied.
>
> Right now it is not good, because RTNL wont be necessarly held when you
> are going to call arp_invalidate() ?

While doing this analysis, I found a refcount bug in llc, I'll send a
patch for net-2.6

Meanwhile, here is the patch for net-next-2.6

Your patch then can be applied after mine.

Thanks

[PATCH] net: RCU conversion of dev_getbyhwaddr() and arp_ioctl()

dev_getbyhwaddr() was called under RTNL.

Rename it to dev_getbyhwaddr_rcu() and change all its caller to now use
RCU locking instead of RTNL.

Change arp_ioctl() to use RCU instead of RTNL locking.

Note: this fix a dev refcount bug in llc

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h
net/core/dev.c
net/ieee802154/af_ieee802154.c
net/ipv4/arp.c
net/llc/af_llc.c