From: Roland Dreier Date: Tue, 19 Aug 2008 22:01:32 +0000 (-0700) Subject: IPoIB: Fix deadlock on RTNL in ipoib_stop() X-Git-Tag: v2.6.27-rc5~52^2^2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a77a57a1a22afc31891d95879fe3cf2ab03838b0;p=pandora-kernel.git IPoIB: Fix deadlock on RTNL in ipoib_stop() Commit c8c2afe3 ("IPoIB: Use rtnl lock/unlock when changing device flags") added a call to rtnl_lock() in ipoib_mcast_join_task(), which is run from the ipoib_workqueue. However, ipoib_stop() (which is run inside rtnl_lock()) flushes this workqueue, which leads to a deadlock if the join task is pending. Fix this by simply not flushing the workqueue from ipoib_stop(). It turns out that we really don't care about workqueue tasks running during or after ipoib_stop(), as long as we make sure to flush the workqueue before unregistering a netdev. This fixes . Signed-off-by: Roland Dreier --- Reading git-diff-tree failed