summaryrefslogtreecommitdiff
path: root/lib/fault-inject.c
diff options
context:
space:
mode:
authorDavid Decotigny <decot@googlers.com>2013-01-12 02:31:36 +0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-01-12 02:54:54 +0400
commit896f97ea95c1d29c0520ee0766b66b7f64cb967c (patch)
tree9898ba669c2348294452fcfd5b7b81fe04cb072f /lib/fault-inject.c
parent254adaa465c40151df11fc1f88f93e6e86eb61d4 (diff)
downloadlinux-896f97ea95c1d29c0520ee0766b66b7f64cb967c.tar.xz
lib: cpu_rmap: avoid flushing all workqueues
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. [akpm@linux-foundation.org: eliminate free_cpu_rmap, rename cpu_rmap_reclaim() to cpu_rmap_release(), propagate kref_put() retval from cpu_rmap_put()] Signed-off-by: David Decotigny <decot@googlers.com> Reviewed-by: Ben Hutchings <bhutchings@solarflare.com> Acked-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org> Cc: "David S. Miller" <davem@davemloft.net> Cc: Or Gerlitz <ogerlitz@mellanox.com> Acked-by: Amir Vadai <amirv@mellanox.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib/fault-inject.c')
0 files changed, 0 insertions, 0 deletions