linux/sound/soc
Amadeusz Sławiński 49a407af0c ASoC: Intel: avs: Use lookup table to create modules
commit 1e744351bc upstream.

As reported by Nathan, when building avs driver using clang with:
  CONFIG_COMPILE_TEST=y
  CONFIG_FORTIFY_SOURCE=y
  CONFIG_KASAN=y
  CONFIG_PCI=y
  CONFIG_SOUND=y
  CONFIG_SND=y
  CONFIG_SND_SOC=y
  CONFIG_SND_SOC_INTEL_AVS=y

there are reports of too big stack use, like:
  sound/soc/intel/avs/path.c:815:18: error: stack frame size (2176) exceeds limit (2048) in 'avs_path_create' [-Werror,-Wframe-larger-than]
  struct avs_path *avs_path_create(struct avs_dev *adev, u32 dma_id,
                   ^
  1 error generated.

This is apparently caused by inlining many calls to guid_equal which
inlines fortified memcpy, using 2 size_t variables.

Instead of hardcoding many calls to guid_equal, use lookup table with
one call, this improves stack usage.

Link: https://lore.kernel.org/alsa-devel/YtlzY9aYdbS4Y3+l@dev-arch.thelio-3990X/T/
Link: https://github.com/ClangBuiltLinux/linux/issues/1642
Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reported-by: Nathan Chancellor <nathan@kernel.org>
Build-tested-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://lore.kernel.org/r/20220722111959.2588597-1-amadeuszx.slawinski@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2022-08-17 15:16:21 +02:00
..
adi ASoC: axi-i2s: Use devm_platform_get_and_ioremap_resource() 2021-06-14 15:01:03 +01:00
amd ASoC: amd: yc: Decrease level of error message 2022-08-17 15:15:55 +02:00
atmel ASoC: mchp-spdifrx: disable end of block interrupt on failures 2022-08-17 15:15:57 +02:00
au1x ASoC: wm8731: Factor out the I2C and SPI bus code into separate modules 2022-04-04 08:39:32 +01:00
bcm ASoC: bcm: Use platform_get_irq() to get the interrupt 2021-12-21 18:05:43 +00:00
cirrus ARM: SoC drivers for 5.16 2021-11-03 17:00:52 -07:00
codecs ASoC: mt6359: Fix refcount leak bug 2022-08-17 15:15:52 +02:00
dwc ASoC: dwc-i2s: Handle errors for clk_enable 2022-03-02 13:45:24 +00:00
fsl ASoC: imx-card: use snd_pcm_format_t type for asrc_format 2022-08-17 15:15:56 +02:00
generic ASoC: audio-graph-card2: Add of_node_put() in fail path 2022-08-17 15:15:56 +02:00
hisilicon ASoC: hisilicon: Use devm_platform_get_and_ioremap_resource() 2021-06-15 16:39:49 +01:00
img ASoC: img-i2s-in: using pm_runtime_resume_and_get instead of pm_runtime_get_sync 2022-04-25 14:00:23 +01:00
intel ASoC: Intel: avs: Use lookup table to create modules 2022-08-17 15:16:21 +02:00
jz4740 ASoC: jz4740-i2s: Use devm_platform_get_and_ioremap_resource() 2021-06-15 16:39:48 +01:00
kirkwood ASoC: kirkwood: Fix reference to PCM buffer address 2021-07-30 17:20:51 +01:00
mediatek ASoC: mediatek: mt8173-rt5650: Fix refcount leak in mt8173_rt5650_dev_probe 2022-08-17 15:15:44 +02:00
meson ASoC: meson: axg-card: Fix nonatomic links 2022-04-21 18:25:15 +01:00
mxs ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe 2022-05-11 17:42:13 +01:00
pxa ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
qcom ASoC: qcom: q6dsp: Fix an off-by-one in q6adm_alloc_copp() 2022-08-17 15:15:56 +02:00
rockchip ASoC: rockchip-i2s: Undo BCLK pinctrl changes 2022-07-14 13:25:52 +01:00
samsung ASoC: samsung: change gpiod_speaker_power and rx1950_audio from global to static variables 2022-08-17 15:15:47 +02:00
sh ASoC: sh: rz-ssi: Release the DMA channels in rz_ssi_probe() error path 2022-04-27 17:22:50 +01:00
sof ASoC: SOF: ipc-msg-injector: fix copy in sof_msg_inject_ipc4_dfs_write() 2022-08-17 15:15:52 +02:00
spear ASoC: spear: spdif_out: Use devm_platform_get_and_ioremap_resource() 2021-06-17 13:47:06 +01:00
sprd ASoC: sprd: Use managed buffer allocation 2021-08-04 08:10:27 +02:00
sti ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call 2022-03-16 16:39:28 +00:00
stm ASoC: stm: Use dev_err_probe() helper 2021-12-20 12:47:23 +00:00
sunxi ASoC: sun4i-i2s: Add support for the R329/D1 variant 2022-02-03 11:30:57 +00:00
tegra ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
ti ASoC: ti: omap-mcbsp: duplicate sysfs error 2022-07-07 17:16:21 +01:00
uniphier ASoC: uniphier: simplify the return expression of uniphier_aio_compr_set_params() 2022-05-09 12:48:41 +01:00
ux500 ASoC: ux500: mop500: Check before clk_put() not needed 2022-05-17 11:58:54 +01:00
xilinx ASoC: xilinx: xlnx_i2s: Handle sysclk setting 2022-01-24 19:45:38 +00:00
xtensa ASoC: xtensa: use asoc_substream_to_rtd() 2020-07-23 19:07:42 +01:00
Kconfig ASoC: soc-utils: Add kunit test for snd_soc_tdm_params_to_bclk() 2022-04-05 18:27:56 +01:00
Makefile ASoC: soc-utils: Add kunit test for snd_soc_tdm_params_to_bclk() 2022-04-05 18:27:56 +01:00
soc-ac97.c ASoC: soc-ac97: cleanup cppcheck warning 2021-08-16 13:29:36 +01:00
soc-acpi.c ALSA: Replace acpi_bus_get_device() 2022-02-01 08:08:08 +01:00
soc-card.c ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
soc-component.c ASoC: soc-component: Update handling to component delays 2022-05-16 12:58:41 +01:00
soc-compress.c ASoC: soc-compress: Change the check for codec_dai 2022-03-14 08:29:11 +00:00
soc-core.c ASoC: soc-core.c: fixup snd_soc_of_get_dai_link_cpus() 2022-08-17 15:15:47 +02:00
soc-dai.c ASoC: soc-dai: update snd_soc_dai_delay() to snd_soc_pcm_dai_delay() 2021-11-29 12:19:40 +00:00
soc-dapm.c ASoC: dapm: Initialise kcontrol data for mux/demux controls 2022-06-24 16:21:58 +01:00
soc-devres.c ASoC: core: Remove only the registered component in devm functions 2020-07-07 11:55:46 +01:00
soc-generic-dmaengine-pcm.c ASoC: soc-generic-dmaengine-pcm: Use default config when none is given 2022-05-04 15:31:19 +01:00
soc-jack.c ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
soc-link.c ASoC: soc-pcm: care trigger rollback 2020-12-09 12:13:38 +00:00
soc-ops.c ASoC: ops: Fix off by one in range control validation 2022-06-07 20:38:08 +01:00
soc-pcm.c ASoC: soc-pcm: fix BE transition for TRIGGER_START 2022-05-23 14:52:59 +01:00
soc-topology-test.c ASoC: topology: KUnit: Convert from cpu to data format 2021-02-02 17:08:21 +00:00
soc-topology.c ASoC: Pull in fixes 2022-04-05 10:29:12 +01:00
soc-utils-test.c ASoC: soc-utils: Add kunit test for snd_soc_tdm_params_to_bclk() 2022-04-05 18:27:56 +01:00
soc-utils.c ASoC: soc-utils: Add helper to calculate BCLK from TDM info 2022-04-05 18:27:55 +01:00