From: Erez Shitrit Date: Tue, 8 Jul 2014 09:45:12 +0000 (+0300) Subject: IB/ipoib: Avoid flushing the workqueue from worker context X-Git-Tag: omap-for-v3.17/fixes-against-rc2~62^2^3~2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4eae374845affc3ebf8ccfc38d554a86adc95003;p=pandora-kernel.git IB/ipoib: Avoid flushing the workqueue from worker context The error flow of ipoib_ib_dev_open() invokes ipoib_ib_dev_stop() with workqueue flushing enabled, which deadlocks if the open procedure itself was called by a worker thread. Fix this by adding a flush enabled flag to ipoib_ib_dev_open() and set it accordingly from the locations where such a call is made. The call trace was the following: [] ? flush_workqueue+0x54/0x80 [] ? ipoib_ib_dev_stop+0x447/0x650 [ib_ipoib] [] ? ipoib_ib_dev_open+0x284/0x430 [ib_ipoib] [] ? ipoib_open+0x78/0x1d0 [ib_ipoib] [] ? ipoib_pkey_open+0x38/0x40 [ib_ipoib] [] ? __ipoib_ib_dev_flush+0x15c/0x2c0 [ib_ipoib] [] ? __ipoib_ib_dev_flush+0x76/0x2c0 [ib_ipoib] [] ? ipoib_ib_dev_flush_heavy+0x0/0x20 [ib_ipoib] [] ? ipoib_ib_dev_flush_heavy+0x1a/0x20 [ib_ipoib] [] ? worker_thread+0x170/0x2a0 [] ? autoremove_wake_function+0x0/0x40 Signed-off-by: Erez Shitrit Signed-off-by: Or Gerlitz Acked-by: Alex Estrin Signed-off-by: Roland Dreier --- Reading git-diff-tree failed