Re: [PATCH v4] lib: cpu_rmap: avoid flushing all workqueues

From: Amir Vadai
Date: Mon Jan 07 2013 - 08:00:08 EST


On 02/01/2013 23:52, David Decotigny wrote:
In some cases, free_irq_cpu_rmap() is called while holding a lock
(eg. rtnl). This can lead to deadlocks, because it invokes
flush_scheduled_work() which ends up waiting for whole system
workqueue to flush, but some pending works might try to acquire the
lock we are already holding.

This commit uses reference-counting to replace
irq_run_affinity_notifiers(). It also removes
irq_run_affinity_notifiers() altogether.

Signed-off-by: David Decotigny<decot@xxxxxxxxxxxx>
---
include/linux/cpu_rmap.h | 13 +++-------
include/linux/interrupt.h | 5 ----
lib/cpu_rmap.c | 63 +++++++++++++++++++++++++++++++++++++++++----
3 files changed, 62 insertions(+), 19 deletions(-)


Acked-by: Amir Vadai <amirv@xxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/