From: Elinor Montmasson <elinor.montmasson(a)savoirfairelinux.com>
mainline inclusion
from mainline-v6.10-rc6
commit 90f3feb24172185f1832636264943e8b5e289245
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IAGEP3
CVE: CVE-2024-42089
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
-------------------------------------------
priv->pdev pointer was set after being used in
fsl_asoc_card_audmux_init().
Move this assignment at the start of the probe function, so
sub-functions can correctly use pdev through priv.
fsl_asoc_card_audmux_init() dereferences priv->pdev to get access to the
dev struct, used with dev_err macros.
As priv is zero-initialised, there would be a NULL pointer dereference.
Note that if priv->dev is dereferenced before assignment but never used,
for example if there is no error to be printed, the driver won't crash
probably due to compiler optimisations.
Fixes: 708b4351f08c ("ASoC: fsl: Add Freescale Generic ASoC Sound Card with ASRC support")
Signed-off-by: Elinor Montmasson <elinor.montmasson(a)savoirfairelinux.com>
Link: https://patch.msgid.link/20240620132511.4291-2-elinor.montmasson@savoirfair…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
Signed-off-by: Ye Bin <yebin10(a)huawei.com>
---
sound/soc/fsl/fsl-asoc-card.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sound/soc/fsl/fsl-asoc-card.c b/sound/soc/fsl/fsl-asoc-card.c
index 5f181b89838a..f76252b3f591 100644
--- a/sound/soc/fsl/fsl-asoc-card.c
+++ b/sound/soc/fsl/fsl-asoc-card.c
@@ -559,6 +559,8 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
if (!priv)
return -ENOMEM;
+ priv->pdev = pdev;
+
cpu_np = of_parse_phandle(np, "audio-cpu", 0);
/* Give a chance to old DT binding */
if (!cpu_np)
@@ -781,7 +783,6 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
}
/* Initialize sound card */
- priv->pdev = pdev;
priv->card.dev = &pdev->dev;
priv->card.owner = THIS_MODULE;
ret = snd_soc_of_parse_card_name(&priv->card, "model");
--
2.31.1
Hi Andrew,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: e0427893d95be3be1bb71e10dfb53b6f732e8e42
commit: f9b54a6714445cde83aeff0318cf767b3b81229d [701/11695] arm64:ilp32: add ARM64_ILP32 to Kconfig
config: arm64-randconfig-004-20240801 (https://download.01.org/0day-ci/archive/20240801/202408010424.vAnjVI1d-lkp@…)
compiler: aarch64-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240801/202408010424.vAnjVI1d-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408010424.vAnjVI1d-lkp@intel.com/
All errors (new ones prefixed by >>):
scripts/genksyms/parse.y: warning: 9 shift/reduce conflicts [-Wconflicts-sr]
scripts/genksyms/parse.y: warning: 5 reduce/reduce conflicts [-Wconflicts-rr]
scripts/genksyms/parse.y: note: rerun with option '-Wcounterexamples' to generate conflict counterexamples
arch/arm64/kernel/vdso-ilp32/Makefile:90: FORCE prerequisite is missing
arch/arm64/kernel/vdso-ilp32/Makefile:87: FORCE prerequisite is missing
arch/arm64/kernel/vdso-ilp32/Makefile:84: FORCE prerequisite is missing
arch/arm64/kernel/vdso-ilp32/Makefile:68: FORCE prerequisite is missing
ld: arch/arm64/kernel/vdso-ilp32/vgettimeofday-ilp32.o: in function `__cvdso_gettimeofday_data.constprop.0':
>> vgettimeofday.c:(.text+0x44): undefined reference to `__tsan_volatile_read4'
ld: vgettimeofday.c:(.text+0x5c): undefined reference to `__tsan_read4'
ld: vgettimeofday.c:(.text+0x84): undefined reference to `__tsan_read8'
ld: vgettimeofday.c:(.text+0x90): undefined reference to `__tsan_read8'
ld: vgettimeofday.c:(.text+0x9c): undefined reference to `__tsan_read8'
ld: vgettimeofday.c:(.text+0xa8): undefined reference to `__tsan_read4'
ld: vgettimeofday.c:(.text+0xb8): undefined reference to `__tsan_read4'
ld: vgettimeofday.c:(.text+0xc8): undefined reference to `__tsan_read8'
ld: vgettimeofday.c:(.text+0xd8): undefined reference to `__tsan_volatile_read4'
ld: vgettimeofday.c:(.text+0x138): undefined reference to `__tsan_write4'
ld: vgettimeofday.c:(.text+0x144): undefined reference to `__tsan_write4'
ld: vgettimeofday.c:(.text+0x194): undefined reference to `__tsan_read4'
ld: vgettimeofday.c:(.text+0x1a0): undefined reference to `__tsan_write4'
ld: vgettimeofday.c:(.text+0x1ac): undefined reference to `__tsan_read4'
ld: vgettimeofday.c:(.text+0x1b8): undefined reference to `__tsan_write4'
ld: arch/arm64/kernel/vdso-ilp32/vgettimeofday-ilp32.o: in function `__cvdso_clock_gettime_data.constprop.0':
vgettimeofday.c:(.text+0x27c): undefined reference to `__tsan_volatile_read4'
ld: vgettimeofday.c:(.text+0x290): undefined reference to `__tsan_read8'
ld: vgettimeofday.c:(.text+0x29c): undefined reference to `__tsan_write8'
ld: vgettimeofday.c:(.text+0x2a8): undefined reference to `__tsan_read8'
ld: vgettimeofday.c:(.text+0x2b4): undefined reference to `__tsan_write8'
ld: vgettimeofday.c:(.text+0x2c4): undefined reference to `__tsan_volatile_read4'
ld: vgettimeofday.c:(.text+0x314): undefined reference to `__tsan_volatile_read4'
ld: vgettimeofday.c:(.text+0x32c): undefined reference to `__tsan_read4'
ld: vgettimeofday.c:(.text+0x360): undefined reference to `__tsan_read8'
ld: vgettimeofday.c:(.text+0x370): undefined reference to `__tsan_read8'
ld: vgettimeofday.c:(.text+0x37c): undefined reference to `__tsan_read8'
ld: vgettimeofday.c:(.text+0x388): undefined reference to `__tsan_read4'
ld: vgettimeofday.c:(.text+0x398): undefined reference to `__tsan_read4'
ld: vgettimeofday.c:(.text+0x3a8): undefined reference to `__tsan_read8'
ld: vgettimeofday.c:(.text+0x3b8): undefined reference to `__tsan_volatile_read4'
ld: vgettimeofday.c:(.text+0x418): undefined reference to `__tsan_write8'
ld: vgettimeofday.c:(.text+0x424): undefined reference to `__tsan_write8'
ld: arch/arm64/kernel/vdso-ilp32/vgettimeofday-ilp32.o: in function `__kernel_clock_getres':
vgettimeofday.c:(.text+0x530): undefined reference to `__tsan_volatile_read4'
ld: vgettimeofday.c:(.text+0x55c): undefined reference to `__tsan_write8'
ld: vgettimeofday.c:(.text+0x568): undefined reference to `__tsan_write8'
ld: arch/arm64/kernel/vdso-ilp32/vgettimeofday-ilp32.o: in function `_sub_I_00099_0':
>> vgettimeofday.c:(.text.startup+0x8): undefined reference to `__tsan_init'
collect2: error: ld returned 1 exit status
make[3]: *** [arch/arm64/kernel/vdso-ilp32/Makefile:68: arch/arm64/kernel/vdso-ilp32/vdso-ilp32.so.dbg] Error 1 shuffle=953699413
make[3]: Target 'include/generated/vdso-ilp32-offsets.h' not remade because of errors.
make[2]: *** [arch/arm64/Makefile:201: vdso_prepare] Error 2 shuffle=953699413
make[2]: Target 'prepare' not remade because of errors.
make[1]: *** [Makefile:234: __sub-make] Error 2 shuffle=953699413
make[1]: Target 'prepare' not remade because of errors.
make: *** [Makefile:234: __sub-make] Error 2 shuffle=953699413
make: Target 'prepare' not remade because of errors.
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki