From: Cong Wang Date: Wed, 16 Jul 2014 21:25:31 +0000 (-0700) Subject: net_sched: hold tcf_lock in netdevice notifier X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=224e923cd9b001c612b7b68933264156271722f9;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git net_sched: hold tcf_lock in netdevice notifier We modify mirred action (m->tcfm_dev) in netdev event, we need to prevent on-going mirred actions from reading freed m->tcfm_dev. So we need to acquire this spin lock. Cc: Jamal Hadi Salim Cc: "David S. Miller" Signed-off-by: Cong Wang Signed-off-by: Cong Wang Signed-off-by: David S. Miller --- diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c index 4f912c0e225b..eb48306033d9 100644 --- a/net/sched/act_mirred.c +++ b/net/sched/act_mirred.c @@ -218,10 +218,12 @@ static int mirred_device_event(struct notifier_block *unused, if (event == NETDEV_UNREGISTER) list_for_each_entry(m, &mirred_list, tcfm_list) { + spin_lock_bh(&m->tcf_lock); if (m->tcfm_dev == dev) { dev_put(dev); m->tcfm_dev = NULL; } + spin_unlock_bh(&m->tcf_lock); } return NOTIFY_DONE;