diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index 5ce25bcb9974..f948cf7bfc44 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c @@ -2723,8 +2723,12 @@ void ipv6_mc_down(struct inet6_dev *idev) synchronize_net(); mld_query_stop_work(idev); mld_report_stop_work(idev); + + mutex_lock(&idev->mc_lock); mld_ifc_stop_work(idev); mld_gq_stop_work(idev); + mutex_unlock(&idev->mc_lock); + mld_dad_stop_work(idev); }