net sched: fix race in mirred device removal
authorstephen hemminger <shemminger@vyatta.com>
Thu, 22 Jul 2010 18:45:04 +0000 (18:45 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 25 Jul 2010 04:04:20 +0000 (21:04 -0700)
commit3b87956ea645fb4de7e59c7d0aa94de04be72615
tree0dde04e6dfad7cd76afbb31eff72a8f08a574a9c
parent76ac21f5ef30e46397e405695eb1240ff0955209
net sched: fix race in mirred device removal

This fixes hang when target device of mirred packet classifier
action is removed.

If a mirror or redirection action is configured to cause packets
to go to another device, the classifier holds a ref count, but was assuming
the adminstrator cleaned up all redirections before removing. The fix
is to add a notifier and cleanup during unregister.

The new list is implicitly protected by RTNL mutex because
it is held during filter add/delete as well as notifier.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tc_act/tc_mirred.h
net/sched/act_mirred.c