summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorPrasad Sodagudi <psodagud@codeaurora.org>2016-02-29 11:18:15 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-25 16:02:35 -0700
commitefea8903218af963f77bba82a7263ca7840e0a34 (patch)
tree99561ef97a7e544752ee83a161c34e019ba98544 /kernel
parent954d86462266ec5e3fb1122cf01b9a339947cb00 (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.c3
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);