ipv4,ipv6: grab rtnl before locking the socket
authorMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Wed, 18 Mar 2015 17:50:42 +0000 (14:50 -0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 19 Mar 2015 02:05:09 +0000 (22:05 -0400)
commitbaf606d9c9b12517e47e0d1370e8aa9f7323f210
tree77bcd9602f772e50f509f8f28e0156aa7acdbf4c
parentfdf9ef8999c0758bf622899e049f2be45ab1f4da
ipv4,ipv6: grab rtnl before locking the socket

There are some setsockopt operations in ipv4 and ipv6 that are grabbing
rtnl after having grabbed the socket lock. Yet this makes it impossible
to do operations that have to lock the socket when already within a rtnl
protected scope, like ndo dev_open and dev_stop.

We normally take coarse grained locks first but setsockopt inverted that.

So this patch invert the lock logic for these operations and makes
setsockopt grab rtnl if it will be needed prior to grabbing socket lock.

Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_sockglue.c
net/ipv6/ipv6_sockglue.c