Patch "spi: bcm-qspi: Fix use after free in bcm_qspi_probe() in error path" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
spi: bcm-qspi: Fix use after free in bcm_qspi_probe() in error path
to the 4.9-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:
spi-bcm-qspi-fix-use-after-free-in-bcm_qspi_probe-in-error-path.patch
and it can be found in the queue-4.9 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
c0368e4db4a3e8a3dce40f3f621c06e14c560d79Mon Sep 17 00:00:00 2001
From: Florian Fainelli <[email protected]>
Date: Wed, 11 Oct 2017 14:59:22 -0700
Subject: spi: bcm-qspi: Fix use after free in bcm_qspi_probe() in error path
From: Florian Fainelli <[email protected]>
commit c0368e4db4a3e8a3dce40f3f621c06e14c560d79 upstream.
There was an inversion in how the error path in bcm_qspi_probe() is done which would make us trip over a KASAN use-after-free report. Turns out that qspi->dev_ids does not get allocated until later in the probe process. Fix this by introducing a new lable: qspi_resource_err which takes care of cleaning up the SPI master instance.
--- drivers/spi/spi-bcm-qspi.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
drivers/spi/spi-bcm-qspi.c +5 -4
@@ -1215,7 +1215,7 @@ int bcm_qspi_probe(struct platform_devic goto qspi_probe_err; } }else { - goto qspi_probe_err; + goto qspi_resource_err; } res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"bspi" );
@@ -1237,7 +1237,7 @@ int bcm_qspi_probe(struct platform_devic qspi->base[CHIP_SELECT ] =devm_ioremap_resource (dev, res);if (IS_ERR (qspi->base[CHIP_SELECT ])) { ret =PTR_ERR (qspi->base[CHIP_SELECT ]); - goto qspi_probe_err; + goto qspi_resource_err; } }
@@ -1245,7 +1245,7 @@ int bcm_qspi_probe(struct platform_devic GFP_KERNEL);if (!qspi->dev_ids) { ret = -ENOMEM ; - goto qspi_probe_err; + goto qspi_resource_err; }for (val =0 ; val < num_irqs; val++) {
@@ -1334,8 +1334,9 @@ qspi_reg_err:bcm_qspi_hw_uninit (qspi);clk_disable_unprepare (qspi->clk); qspi_probe_err: -spi_master_put (master);kfree (qspi->dev_ids); +qspi_resource_err: +spi_master_put (master);return ret; }/* probe function to be called by SoC specific platform driver probe */
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/spi-bcm-qspi-fix-use-after-free-in-bcm_qspi_probe-in-error-path.patch