Patch "Input: synaptics-rmi4 - fix error handling in SPI transport driver" has been added to the 4.8-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
Input: synaptics-rmi4 - fix error handling in SPI transport driver
to the 4.8-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
input-synaptics-rmi4-fix-error-handling-in-spi-transport-driver.patch
and it can be found in the queue-4.8 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
bbc2ceeb3220e54c7574f0b5e3a252fd9a62cf8aMon Sep 17 00:00:00 2001
From: Guenter Roeck <[email protected]>
Date: Tue, 4 Oct 2016 11:48:55 -0700
Subject: Input: synaptics-rmi4 - fix error handling in SPI transport driver
From: Guenter Roeck <[email protected]>
commit bbc2ceeb3220e54c7574f0b5e3a252fd9a62cf8a upstream.
Instantiating the rmi4 SPI transport driver without an interrupt assigned caused the driver to fail to load, but it does not clean up its transport device registration. Result may be a crash at a later time, for example when rebooting the system.
--- drivers/input/rmi4/rmi_spi.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-)
drivers/input/rmi4/rmi_spi.c +12 -10
@@ -396,6 +396,13 @@ static inline int rmi_spi_of_probe(struc }#endif +static void rmi_spi_unregister_transport (void *data) +{ +struct rmi_spi_xport *rmi_spi = data; + +rmi_unregister_transport_device (&rmi_spi->xport); +} +static int rmi_spi_probe (struct spi_device *spi) {struct rmi_spi_xport *rmi_spi;
@@ -464,6 +471,11 @@ static int rmi_spi_probe(struct spi_devidev_err (&spi->dev,"failed to register transport.\n" );return retval; } + retval =devm_add_action_or_reset (&spi->dev, + rmi_spi_unregister_transport, + rmi_spi); +if (retval) +return retval; retval =rmi_spi_init_irq (spi);if (retval <0 )
@@ -473,15 +485,6 @@ static int rmi_spi_probe(struct spi_devireturn 0 ; } -static int rmi_spi_remove (struct spi_device *spi) -{ -struct rmi_spi_xport *rmi_spi =spi_get_drvdata (spi); - -rmi_unregister_transport_device (&rmi_spi->xport); - -return 0 ; -} -#ifdef CONFIG_PM_SLEEP static int rmi_spi_suspend (struct device *dev) {
@@ -577,7 +580,6 @@ static struct spi_driver rmi_spi_driver }, .id_table = rmi_id, .probe = rmi_spi_probe, - .remove = rmi_spi_remove, };module_spi_driver (rmi_spi_driver);
Patches currently in stable-queue which might be from [email protected] are
queue-4.8/input-synaptics-rmi4-fix-error-handling-in-spi-transport-driver.patch queue-4.8/watchdog-core-fix-devres_alloc-allocation-size.patch queue-4.8/input-synaptics-rmi4-fix-error-handling-in-i2c-transport-driver.patch