Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq fix from Thomas Gleixner: "A single bugfix for the irq core to prevent silent data corruption and malfunction of threaded interrupts under certain conditions" * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: genirq: Make force irq threading setup more robust
This commit is contained in:
commit
b9fb1fc7f9
|
@ -1068,6 +1068,13 @@ static int irq_setup_forced_threading(struct irqaction *new)
|
|||
if (new->flags & (IRQF_NO_THREAD | IRQF_PERCPU | IRQF_ONESHOT))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* No further action required for interrupts which are requested as
|
||||
* threaded interrupts already
|
||||
*/
|
||||
if (new->handler == irq_default_primary_handler)
|
||||
return 0;
|
||||
|
||||
new->flags |= IRQF_ONESHOT;
|
||||
|
||||
/*
|
||||
|
@ -1075,7 +1082,7 @@ static int irq_setup_forced_threading(struct irqaction *new)
|
|||
* thread handler. We force thread them as well by creating a
|
||||
* secondary action.
|
||||
*/
|
||||
if (new->handler != irq_default_primary_handler && new->thread_fn) {
|
||||
if (new->handler && new->thread_fn) {
|
||||
/* Allocate the secondary action */
|
||||
new->secondary = kzalloc(sizeof(struct irqaction), GFP_KERNEL);
|
||||
if (!new->secondary)
|
||||
|
|
Loading…
Reference in New Issue