summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/smsc
diff options
context:
space:
mode:
authorMichal Kubecek <mkubecek@suse.cz>2014-06-03 12:26:06 +0400
committerDavid S. Miller <davem@davemloft.net>2014-06-04 03:07:44 +0400
commit21ee543edc0dea36ab58d24523fcd42b8a270df8 (patch)
tree75ebd1123fd7f54e1712e0e3232c859548781e95 /drivers/net/ethernet/smsc
parent1299b3c49b7119ae534284e4129032441f40a422 (diff)
downloadlinux-21ee543edc0dea36ab58d24523fcd42b8a270df8.tar.xz
xfrm: fix race between netns cleanup and state expire notification
The xfrm_user module registers its pernet init/exit after xfrm itself so that its net exit function xfrm_user_net_exit() is executed before xfrm_net_exit() which calls xfrm_state_fini() to cleanup the SA's (xfrm states). This opens a window between zeroing net->xfrm.nlsk pointer and deleting all xfrm_state instances which may access it (via the timer). If an xfrm state expires in this window, xfrm_exp_state_notify() will pass null pointer as socket to nlmsg_multicast(). As the notifications are called inside rcu_read_lock() block, it is sufficient to retrieve the nlsk socket with rcu_dereference() and check the it for null. Signed-off-by: Michal Kubecek <mkubecek@suse.cz> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/smsc')
0 files changed, 0 insertions, 0 deletions