linux/drivers/input/rmi4
Mathias Krause 4036419469 Input: synaptics-rmi4 - fix UAF of IRQ domain on driver removal
commit fbf8d71742 upstream.

Calling irq_domain_remove() will lead to freeing the IRQ domain
prematurely. The domain is still referenced and will be attempted to get
used via rmi_free_function_list() -> rmi_unregister_function() ->
irq_dispose_mapping() -> irq_get_irq_data()'s ->domain pointer.

With PaX's MEMORY_SANITIZE this will lead to an access fault when
attempting to dereference embedded pointers, as in Torsten's report that
was faulting on the 'domain->ops->unmap' test.

Fix this by releasing the IRQ domain only after all related IRQs have
been deactivated.

Fixes: 24d28e4f12 ("Input: synaptics-rmi4 - convert irq distribution to irq_domain")
Reported-by: Torsten Hilbrich <torsten.hilbrich@secunet.com>
Signed-off-by: Mathias Krause <minipli@grsecurity.net>
Link: https://lore.kernel.org/r/20240222142654.856566-1-minipli@grsecurity.net
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2024-10-17 15:11:49 +02:00
..
Kconfig Input: synaptics-rmi4 - add support for F3A 2020-10-04 19:51:44 -07:00
Makefile Input: synaptics-rmi4 - add support for F3A 2020-10-04 19:51:44 -07:00
rmi_2d_sensor.c Input: synaptics-rmi4 - remove the exporting of rmi_2d_sensor_set_input_params 2019-07-24 12:58:11 +03:00
rmi_2d_sensor.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rmi_bus.c Input: synaptics-rmi4 - fix use after free in rmi_unregister_function() 2023-11-20 11:08:28 +01:00
rmi_bus.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rmi_driver.c Input: synaptics-rmi4 - fix UAF of IRQ domain on driver removal 2024-10-17 15:11:49 +02:00
rmi_driver.h Input: synaptics-rmi4 - add support for F3A 2020-10-04 19:51:44 -07:00
rmi_f01.c Input: synaptics-rmi4 - fix kerneldoc warnings 2020-11-09 16:45:50 -08:00
rmi_f03.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rmi_f3a.c Input: synaptics-rmi4 - add support for F3A 2020-10-04 19:51:44 -07:00
rmi_f11.c Input: synaptics-rmi4 - fix kerneldoc warnings 2020-11-09 16:45:50 -08:00
rmi_f12.c Input: synaptics-rmi4 - do not consume more data than we have (F11, F12) 2019-11-04 16:11:50 -08:00
rmi_f30.c Input: synaptics-rmi4 - rename f30_data to gpio_data 2020-10-04 19:51:43 -07:00
rmi_f34.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rmi_f34.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rmi_f34v7.c Input: synaptics-rmi4 - support bootloader v8 in f34v7 2020-10-04 19:51:45 -07:00
rmi_f54.c Input: synaptics-rmi4 - fix kerneldoc warnings 2020-11-09 16:45:50 -08:00
rmi_f55.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rmi_i2c.c Input: synaptics-rmi4 - fix kerneldoc warnings 2020-11-09 16:45:50 -08:00
rmi_smbus.c Input: synaptics-rmi4 - handle reset delay when using SMBus trsnsport 2023-11-08 17:26:45 +01:00
rmi_spi.c Input: synaptics-rmi4 - use new structure for SPI transfer delays 2020-12-10 23:39:16 -08:00