diff mbox

ASoC: Intel: sst-acpi: Fix Oops in case of missing firmware

Message ID 1393339067-10307-1-git-send-email-jarkko.nikula@linux.intel.com (mailing list archive)
State Accepted
Commit 5069e5c93ca73eab185d3bb338a1362275f9ea70
Headers show

Commit Message

Jarkko Nikula Feb. 25, 2014, 2:37 p.m. UTC
I swear I tested missing firmware in commit e5161d7987f1 ("ASoC: Intel:
sst-acpi: Request firmware before SST platform driver probing").

Unfortunately same wasn't done in commit 6dda27cbbd1d ("ASoC: Intel:
sst-acpi: Add support for multiple machine drivers per platform") which
will cause NULL pointer dereference in sst_acpi_fw_cb() when printing the
error since sst_acpi->mach is not set.

Fix this obvious error by setting the sst_acpi->mach in sst_acpi_probe().

Reported-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
---
 sound/soc/intel/sst-acpi.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Liam Girdwood Feb. 25, 2014, 2:42 p.m. UTC | #1
On Tue, 2014-02-25 at 16:37 +0200, Jarkko Nikula wrote:
> I swear I tested missing firmware in commit e5161d7987f1 ("ASoC: Intel:
> sst-acpi: Request firmware before SST platform driver probing").
> 
> Unfortunately same wasn't done in commit 6dda27cbbd1d ("ASoC: Intel:
> sst-acpi: Add support for multiple machine drivers per platform") which
> will cause NULL pointer dereference in sst_acpi_fw_cb() when printing the
> error since sst_acpi->mach is not set.
> 
> Fix this obvious error by setting the sst_acpi->mach in sst_acpi_probe().
> 
> Reported-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>

Acked-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Adam Williamson Feb. 25, 2014, 4:57 p.m. UTC | #2
On Tue, 2014-02-25 at 16:37 +0200, Jarkko Nikula wrote:
> I swear I tested missing firmware in commit e5161d7987f1 ("ASoC: Intel:
> sst-acpi: Request firmware before SST platform driver probing").
> 
> Unfortunately same wasn't done in commit 6dda27cbbd1d ("ASoC: Intel:
> sst-acpi: Add support for multiple machine drivers per platform") which
> will cause NULL pointer dereference in sst_acpi_fw_cb() when printing the
> error since sst_acpi->mach is not set.
> 
> Fix this obvious error by setting the sst_acpi->mach in sst_acpi_probe().

FWIW, I did test with the patch set from lrg's tree as of a couple days
ago, and hit this crash. So I can confirm the bug for sure. I'll test
the fix with a new kernel build in a couple of hours.
Mark Brown Feb. 25, 2014, 11:47 p.m. UTC | #3
On Tue, Feb 25, 2014 at 04:37:47PM +0200, Jarkko Nikula wrote:
> I swear I tested missing firmware in commit e5161d7987f1 ("ASoC: Intel:
> sst-acpi: Request firmware before SST platform driver probing").

Applied, thanks.
diff mbox

Patch

diff --git a/sound/soc/intel/sst-acpi.c b/sound/soc/intel/sst-acpi.c
index 0bb43169e146..5d06eecb6198 100644
--- a/sound/soc/intel/sst-acpi.c
+++ b/sound/soc/intel/sst-acpi.c
@@ -139,6 +139,7 @@  static int sst_acpi_probe(struct platform_device *pdev)
 	sst_pdata = &sst_acpi->sst_pdata;
 	sst_pdata->id = desc->sst_id;
 	sst_acpi->desc = desc;
+	sst_acpi->mach = mach;
 
 	if (desc->resindex_dma_base >= 0) {
 		sst_pdata->dma_engine = desc->dma_engine;