diff options
author | Thomas Gleixner <[email protected]> | 2016-01-14 08:43:38 +0100 |
---|---|---|
committer | Thomas Gleixner <[email protected]> | 2016-01-15 13:43:58 +0100 |
commit | e23b257c293ce4bcc8cabb2aa3097b6ed8a8261a (patch) | |
tree | e05376f96aaa28babe15029771536483dbf3c108 /lib/netdev-notifier-error-inject.c | |
parent | 7030a7e9321166eef44c811fe4af4d460360d424 (diff) |
x86/irq: Call chip->irq_set_affinity in proper context
setup_ioapic_dest() calls irqchip->irq_set_affinity() completely
unprotected. That's wrong in several aspects:
- it opens a race window where irq_set_affinity() can be interrupted and the
irq chip left in unconsistent state.
- it triggers a lockdep splat when we fix the vector race for 4.3+ because
vector lock is taken with interrupts enabled.
The proper calling convention is irq descriptor lock held and interrupts
disabled.
Reported-and-tested-by: Borislav Petkov <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Cc: Jiang Liu <[email protected]>
Cc: Jeremiah Mahler <[email protected]>
Cc: [email protected]
Cc: Guenter Roeck <[email protected]>
Cc: Joe Lawrence <[email protected]>
Cc: [email protected]
Link: http://lkml.kernel.org/r/alpine.DEB.2.11.1601140919420.3575@nanos
Signed-off-by: Thomas Gleixner <[email protected]>
Diffstat (limited to 'lib/netdev-notifier-error-inject.c')
0 files changed, 0 insertions, 0 deletions