diff options
author | Prasad Sodagudi <psodagud@codeaurora.org> | 2016-02-29 11:18:15 +0530 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-25 16:02:35 -0700 |
commit | efea8903218af963f77bba82a7263ca7840e0a34 (patch) | |
tree | 99561ef97a7e544752ee83a161c34e019ba98544 /kernel | |
parent | 954d86462266ec5e3fb1122cf01b9a339947cb00 (diff) |
genirq: call cancel_work_sync from irq_set_affinity_notifier
When ever notification of IRQ affinity changes, call
cancel_work_sync from irq_set_affinity_notifier to cancel
all pending works to avoid work list corruption.
Change-Id: I1f093bcc43be8c6696bad29250e4926cbc6c4029
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/irq/manage.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 6ead200370da..5cb153a8474a 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -319,6 +319,9 @@ irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify) desc->affinity_notify = notify; raw_spin_unlock_irqrestore(&desc->lock, flags); + if (!notify && old_notify) + cancel_work_sync(&old_notify->work); + if (old_notify) kref_put(&old_notify->kref, old_notify->release); |