genirq: keep affinities set from userspace across free/request_irq()
commitf6d87f4bd259cf33e092cd1a8fde05f291c47af1
authorThomas Gleixner <tglx@linutronix.de>
Fri, 7 Nov 2008 12:18:30 +0000 (7 13:18 +0100)
committerIngo Molnar <mingo@elte.hu>
Sun, 9 Nov 2008 21:23:49 +0000 (9 22:23 +0100)
treeabaa66af3c80fb18a20004b8d97261c680551792
parent8b805ef617cf0e02f6d18b891f8deb6246421b01
genirq: keep affinities set from userspace across free/request_irq()

Impact: preserve user-modified affinities on interrupts

Kumar Galak noticed that commit
18404756765c713a0be4eb1082920c04822ce588 (genirq: Expose default irq
affinity mask (take 3))

overrides an already set affinity setting across a free /
request_irq(). Happens e.g. with ifdown/ifup of a network device.

Change the logic to mark the affinities as set and keep them
intact. This also fixes the unlocked access to irq_desc in
irq_select_affinity() when called from irq_affinity_proc_write()

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/irq.h
kernel/irq/internals.h
kernel/irq/manage.c
kernel/irq/migration.c
kernel/irq/proc.c