linux-brain/kernel/irq
Alexander Sverdlin 1b16ddb28b genirq/irqdomain: Check pointer in irq_domain_alloc_irqs_hierarchy()
[ Upstream commit 87f2d1c662fa1761359fdf558246f97e484d177a ]

irq_domain_alloc_irqs_hierarchy() has 3 call sites in the compilation unit
but only one of them checks for the pointer which is being dereferenced
inside the called function. Move the check into the function. This allows
for catching the error instead of the following crash:

Unable to handle kernel NULL pointer dereference at virtual address 00000000
PC is at 0x0
LR is at gpiochip_hierarchy_irq_domain_alloc+0x11f/0x140
...
[<c06c23ff>] (gpiochip_hierarchy_irq_domain_alloc)
[<c0462a89>] (__irq_domain_alloc_irqs)
[<c0462dad>] (irq_create_fwspec_mapping)
[<c06c2251>] (gpiochip_to_irq)
[<c06c1c9b>] (gpiod_to_irq)
[<bf973073>] (gpio_irqs_init [gpio_irqs])
[<bf974048>] (gpio_irqs_exit+0xecc/0xe84 [gpio_irqs])
Code: bad PC value

Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200306174720.82604-1-alexander.sverdlin@nokia.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-04-17 10:48:41 +02:00
..
affinity.c genirq/affinity: Spread IRQs to all available NUMA nodes 2019-02-12 19:46:57 +01:00
autoprobe.c genirq: Delay deactivation in free_irq() 2019-07-21 09:03:12 +02:00
chip.c genirq: Delay deactivation in free_irq() 2019-07-21 09:03:12 +02:00
cpuhotplug.c genirq: Delay deactivation in free_irq() 2019-07-21 09:03:12 +02:00
debug.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk 2018-02-01 13:36:15 -08:00
debugfs.c x86/apic/msi: Plug non-maskable MSI affinity race 2020-02-11 04:34:18 -08:00
devres.c genirq: Add missing SPDX identifiers 2018-03-20 14:23:28 +01:00
dummychip.c genirq: Add missing SPDX identifiers 2018-03-20 14:23:28 +01:00
generic-chip.c genirq: Add missing SPDX identifiers 2018-03-20 14:23:28 +01:00
handle.c genirq: Add missing SPDX identifiers 2018-03-20 14:23:28 +01:00
internals.h genirq/proc: Reject invalid affinity masks (again) 2020-02-28 16:38:59 +01:00
ipi.c genirq: Add missing SPDX identifiers 2018-03-20 14:23:28 +01:00
irq_sim.c genirq/irq_sim: Remove the license boilerplate 2018-04-26 22:26:39 +02:00
irqdesc.c genirq: Properly pair kobject_del() with kobject_add() 2019-08-29 08:28:57 +02:00
irqdomain.c genirq/irqdomain: Check pointer in irq_domain_alloc_irqs_hierarchy() 2020-04-17 10:48:41 +02:00
Kconfig genirq/irqchip: Remove MULTI_IRQ_HANDLER as it's now obselete 2018-08-03 12:14:10 +02:00
Makefile Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-11-13 17:33:11 -08:00
manage.c genirq: Fix reference leaks on irq affinity notifiers 2020-04-02 15:28:18 +02:00
matrix.c irq/matrix: Fix memory overallocation 2019-12-01 09:17:13 +01:00
migration.c genirq/migration: Avoid out of line call if pending is not set 2018-06-06 15:18:20 +02:00
msi.c x86/apic/msi: Plug non-maskable MSI affinity race 2020-02-11 04:34:18 -08:00
pm.c genirq: Add missing SPDX identifiers 2018-03-20 14:23:28 +01:00
proc.c genirq/proc: Reject invalid affinity masks (again) 2020-02-28 16:38:59 +01:00
resend.c genirq: Prevent NULL pointer dereference in resend_irqs() 2019-09-19 09:09:34 +02:00
settings.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
spurious.c genirq: Cleanup top of file comments 2018-03-20 14:23:27 +01:00
timings.c genirq: Remove license boilerplate/references 2018-03-20 14:23:28 +01:00