Messages in this thread | | | Date | Sat, 29 Dec 2012 12:36:44 -0800 | From | Josh Triplett <> | Subject | Re: [PATCH v3] lib: cpu_rmap: avoid flushing all workqueues |
| |
On Sat, Dec 29, 2012 at 11:57:09AM -0800, 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@googlers.com>
You might consider adding a cpu_rmap_get to parallel cpu_rmap_put.
Also, why keep free_cpu_rmap around at this point? As far as I can tell, it has no callers.
Otherwise, this looks good to me.
- Josh Triplett
| |