From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Liam Girdwood <liam.r.girdwood@linux.intel.com>,
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>,
Mark Brown <broonie@kernel.org>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 5.3 15/81] ASoC: SOF: Intel: initialise and verify FW crash dump data.
Date: Wed, 30 Oct 2019 11:48:21 -0400 [thread overview]
Message-ID: <20191030154928.9432-15-sashal@kernel.org> (raw)
In-Reply-To: <20191030154928.9432-1-sashal@kernel.org>
From: Liam Girdwood <liam.r.girdwood@linux.intel.com>
[ Upstream commit ff2be865633e6fa523cd2db3b73197d795dec991 ]
FW mailbox offset was not set before use and HDR size was not validated.
Fix this.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20190927200538.660-12-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/sof/intel/bdw.c | 7 +++++++
sound/soc/sof/intel/byt.c | 6 ++++++
sound/soc/sof/intel/hda.c | 7 +++++++
3 files changed, 20 insertions(+)
diff --git a/sound/soc/sof/intel/bdw.c b/sound/soc/sof/intel/bdw.c
index 70d524ef9bc07..0ca3c1b55eeb1 100644
--- a/sound/soc/sof/intel/bdw.c
+++ b/sound/soc/sof/intel/bdw.c
@@ -37,6 +37,7 @@
#define MBOX_SIZE 0x1000
#define MBOX_DUMP_SIZE 0x30
#define EXCEPT_OFFSET 0x800
+#define EXCEPT_MAX_HDR_SIZE 0x400
/* DSP peripherals */
#define DMAC0_OFFSET 0xFE000
@@ -228,6 +229,11 @@ static void bdw_get_registers(struct snd_sof_dev *sdev,
/* note: variable AR register array is not read */
/* then get panic info */
+ if (xoops->arch_hdr.totalsize > EXCEPT_MAX_HDR_SIZE) {
+ dev_err(sdev->dev, "invalid header size 0x%x. FW oops is bogus\n",
+ xoops->arch_hdr.totalsize);
+ return;
+ }
offset += xoops->arch_hdr.totalsize;
sof_mailbox_read(sdev, offset, panic_info, sizeof(*panic_info));
@@ -588,6 +594,7 @@ static int bdw_probe(struct snd_sof_dev *sdev)
/* TODO: add offsets */
sdev->mmio_bar = BDW_DSP_BAR;
sdev->mailbox_bar = BDW_DSP_BAR;
+ sdev->dsp_oops_offset = MBOX_OFFSET;
/* PCI base */
mmio = platform_get_resource(pdev, IORESOURCE_MEM,
diff --git a/sound/soc/sof/intel/byt.c b/sound/soc/sof/intel/byt.c
index 107d711efc3f0..96faaa8fa5a3a 100644
--- a/sound/soc/sof/intel/byt.c
+++ b/sound/soc/sof/intel/byt.c
@@ -28,6 +28,7 @@
#define MBOX_OFFSET 0x144000
#define MBOX_SIZE 0x1000
#define EXCEPT_OFFSET 0x800
+#define EXCEPT_MAX_HDR_SIZE 0x400
/* DSP peripherals */
#define DMAC0_OFFSET 0x098000
@@ -273,6 +274,11 @@ static void byt_get_registers(struct snd_sof_dev *sdev,
/* note: variable AR register array is not read */
/* then get panic info */
+ if (xoops->arch_hdr.totalsize > EXCEPT_MAX_HDR_SIZE) {
+ dev_err(sdev->dev, "invalid header size 0x%x. FW oops is bogus\n",
+ xoops->arch_hdr.totalsize);
+ return;
+ }
offset += xoops->arch_hdr.totalsize;
sof_mailbox_read(sdev, offset, panic_info, sizeof(*panic_info));
diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c
index 7f665392618f6..f2d45d62dfa56 100644
--- a/sound/soc/sof/intel/hda.c
+++ b/sound/soc/sof/intel/hda.c
@@ -37,6 +37,8 @@
#define IS_CFL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa348)
#define IS_CNL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9dc8)
+#define EXCEPT_MAX_HDR_SIZE 0x400
+
/*
* Debug
*/
@@ -121,6 +123,11 @@ static void hda_dsp_get_registers(struct snd_sof_dev *sdev,
/* note: variable AR register array is not read */
/* then get panic info */
+ if (xoops->arch_hdr.totalsize > EXCEPT_MAX_HDR_SIZE) {
+ dev_err(sdev->dev, "invalid header size 0x%x. FW oops is bogus\n",
+ xoops->arch_hdr.totalsize);
+ return;
+ }
offset += xoops->arch_hdr.totalsize;
sof_block_read(sdev, sdev->mmio_bar, offset,
panic_info, sizeof(*panic_info));
--
2.20.1
next prev parent reply other threads:[~2019-10-30 15:50 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-30 15:48 [PATCH AUTOSEL 5.3 01/81] regulator: of: fix suspend-min/max-voltage parsing Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 02/81] ASoC: samsung: arndale: Add missing OF node dereferencing Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 03/81] ASoC: wm8994: Do not register inapplicable controls for WM1811 Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 04/81] regulator: da9062: fix suspend_enable/disable preparation Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 05/81] ASoC: topology: Fix a signedness bug in soc_tplg_dapm_widget_create() Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 06/81] arm64: dts: allwinner: a64: pine64-plus: Add PHY regulator delay Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 07/81] arm64: dts: allwinner: a64: Drop PMU node Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 08/81] arm64: dts: allwinner: a64: sopine-baseboard: Add PHY regulator delay Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 09/81] arm64: dts: Fix gpio to pinmux mapping Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 10/81] regulator: ti-abb: Fix timeout in ti_abb_wait_txdone/ti_abb_clear_all_txdone Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 11/81] pinctrl: intel: Allocate IRQ chip dynamic Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 12/81] ASoC: SOF: loader: fix kernel oops on firmware boot failure Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 13/81] ASoC: SOF: topology: fix parse fail issue for byte/bool tuple types Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 14/81] ASoC: SOF: Intel: hda: fix warnings during FW load Sasha Levin
2019-10-30 15:48 ` Sasha Levin [this message]
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 16/81] ASoC: SOF: Intel: hda: Disable DMI L1 entry during capture Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 17/81] ASoC: rt5682: add NULL handler to set_jack function Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 18/81] ASoC: intel: sof_rt5682: add remove function to disable jack Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 19/81] ASoC: intel: bytcr_rt5651: add null check to support_button_press Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 20/81] regulator: pfuze100-regulator: Variable "val" in pfuze100_regulator_probe() could be uninitialized Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 21/81] ASoC: wm_adsp: Don't generate kcontrols without READ flags Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 22/81] ASoc: rockchip: i2s: Fix RPM imbalance Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 23/81] arm64: dts: rockchip: fix Rockpro64 RK808 interrupt line Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 24/81] ARM: dts: logicpd-torpedo-som: Remove twl_keypad Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 25/81] arm64: dts: rockchip: fix RockPro64 vdd-log regulator settings Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 26/81] arm64: dts: rockchip: fix RockPro64 sdhci settings Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 27/81] pinctrl: ns2: Fix off by one bugs in ns2_pinmux_enable() Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 28/81] pinctrl: stmfx: fix null pointer on remove Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 29/81] arm64: dts: zii-ultra: fix ARM regulator states Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 30/81] ARM: dts: am3874-iceboard: Fix 'i2c-mux-idle-disconnect' usage Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 31/81] ASoC: msm8916-wcd-digital: add missing MIX2 path for RX1/2 Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 32/81] ASoC: simple_card_utils.h: Fix potential multiple redefinition error Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 33/81] ARM: dts: Use level interrupt for omap4 & 5 wlcore Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 34/81] ARM: mm: fix alignment handler faults under memory pressure Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 35/81] scsi: qla2xxx: fix a potential NULL pointer dereference Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 36/81] scsi: scsi_dh_alua: handle RTPG sense code correctly during state transitions Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 37/81] scsi: sni_53c710: fix compilation error Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 38/81] scsi: fix kconfig dependency warning related to 53C700_LE_ON_BE Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 39/81] ARM: 8908/1: add __always_inline to functions called from __get_user_check() Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 40/81] ARM: 8914/1: NOMMU: Fix exc_ret for XIP Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 41/81] arm64: dts: rockchip: fix RockPro64 sdmmc settings Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 42/81] arm64: dts: rockchip: Fix usb-c on Hugsun X99 TV Box Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 43/81] arm64: dts: lx2160a: Correct CPU core idle state name Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 44/81] ARM: dts: imx6q-logicpd: Re-Enable SNVS power key Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 45/81] ARM: dts: vf610-zii-scu4-aib: Specify 'i2c-mux-idle-disconnect' Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 46/81] ARM: dts: imx7s: Correct GPT's ipg clock source Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 47/81] arm64: dts: imx8mq: Use correct clock for usdhc's ipg clk Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 48/81] arm64: dts: imx8mm: " Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 49/81] perf tools: Fix resource leak of closedir() on the error paths Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 50/81] perf c2c: Fix memory leak in build_cl_output() Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 51/81] USB: legousbtower: fix a signedness bug in tower_probe() Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 52/81] 8250-men-mcb: fix error checking when get_num_ports returns -ENODEV Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 53/81] perf kmem: Fix memory leak in compact_gfp_flags() Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 54/81] ARM: davinci: dm365: Fix McBSP dma_slave_map entry Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 55/81] drm/amdgpu: fix potential VM faults Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 56/81] drm/amdgpu: fix error handling in amdgpu_bo_list_create Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 57/81] scsi: target: core: Do not overwrite CDB byte 1 Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 58/81] scsi: hpsa: add missing hunks in reset-patch Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 59/81] ASoC: Intel: sof-rt5682: add a check for devm_clk_get Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 60/81] ASoC: SOF: control: return true when kcontrol values change Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 61/81] tracing: Fix "gfp_t" format for synthetic events Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 62/81] ARM: dts: bcm2837-rpi-cm3: Avoid leds-gpio probing issue Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 63/81] i2c: aspeed: fix master pending state handling Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191030154928.9432-15-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=broonie@kernel.org \
--cc=liam.r.girdwood@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).