{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-40317","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2025-04-16T07:20:57.186Z","datePublished":"2025-12-08T00:46:44.287Z","dateUpdated":"2026-08-05T12:09:27.968Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T12:09:27.968Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nregmap: slimbus: fix bus_context pointer in regmap init calls\n\nCommit 4e65bda8273c (\"ASoC: wcd934x: fix error handling in\nwcd934x_codec_parse_data()\") revealed the problem in the slimbus regmap.\nThat commit breaks audio playback, for instance, on sdm845 Thundercomm\nDragonboard 845c board:\n\n Unable to handle kernel paging request at virtual address ffff8000847cbad4\n ...\n CPU: 5 UID: 0 PID: 776 Comm: aplay Not tainted 6.18.0-rc1-00028-g7ea30958b305 #11 PREEMPT\n Hardware name: Thundercomm Dragonboard 845c (DT)\n ...\n Call trace:\n  slim_xfer_msg+0x24/0x1ac [slimbus] (P)\n  slim_read+0x48/0x74 [slimbus]\n  regmap_slimbus_read+0x18/0x24 [regmap_slimbus]\n  _regmap_raw_read+0xe8/0x174\n  _regmap_bus_read+0x44/0x80\n  _regmap_read+0x60/0xd8\n  _regmap_update_bits+0xf4/0x140\n  _regmap_select_page+0xa8/0x124\n  _regmap_raw_write_impl+0x3b8/0x65c\n  _regmap_bus_raw_write+0x60/0x80\n  _regmap_write+0x58/0xc0\n  regmap_write+0x4c/0x80\n  wcd934x_hw_params+0x494/0x8b8 [snd_soc_wcd934x]\n  snd_soc_dai_hw_params+0x3c/0x7c [snd_soc_core]\n  __soc_pcm_hw_params+0x22c/0x634 [snd_soc_core]\n  dpcm_be_dai_hw_params+0x1d4/0x38c [snd_soc_core]\n  dpcm_fe_dai_hw_params+0x9c/0x17c [snd_soc_core]\n  snd_pcm_hw_params+0x124/0x464 [snd_pcm]\n  snd_pcm_common_ioctl+0x110c/0x1820 [snd_pcm]\n  snd_pcm_ioctl+0x34/0x4c [snd_pcm]\n  __arm64_sys_ioctl+0xac/0x104\n  invoke_syscall+0x48/0x104\n  el0_svc_common.constprop.0+0x40/0xe0\n  do_el0_svc+0x1c/0x28\n  el0_svc+0x34/0xec\n  el0t_64_sync_handler+0xa0/0xf0\n  el0t_64_sync+0x198/0x19c\n\nThe __devm_regmap_init_slimbus() started to be used instead of\n__regmap_init_slimbus() after the commit mentioned above and turns out\nthe incorrect bus_context pointer (3rd argument) was used in\n__devm_regmap_init_slimbus(). It should be just \"slimbus\" (which is equal\nto &slimbus->dev). Correct it. The wcd934x codec seems to be the only or\nthe first user of devm_regmap_init_slimbus() but we should fix it till\nthe point where __devm_regmap_init_slimbus() was introduced therefore\ntwo \"Fixes\" tags.\n\nWhile at this, also correct the same argument in __regmap_init_slimbus()."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerable code is reached from userspace through the ALSA PCM ioctl path (SNDRV_PCM_IOCTL_HW_PARAMS on /dev/snd/pcmC*D*) leading to wcd934x_hw_params() → regmap_write(wcd->if_regmap), as shown in the commit's own oops trace. SLIMbus is an on-SoC bus with no network or adjacent-network exposure, so exploitation requires local access to the audio device node.\nAC:L - The bus_context pointer is unconditionally wrong for every regmap created via devm_regmap_init_slimbus(), so any hw_params call on an affected sdm845/WCD934x device reliably dereferences the stale stack address — no race, no timing window, no unpredictable precondition. The driver is enabled by default in arm64 defconfig, and the attacker fully controls when and how often the trigger fires by repeatedly configuring PCM streams.\nPR:L - An unprivileged local user only needs access to the ALSA PCM character device, which is granted by default on the affected platforms (logind/udev ACLs for the seat user on Linux distributions, the audio group on postmarketOS/Debian on Yoga C630, and the audio UID on Android). No CAP_SYS_ADMIN or root is required to open /dev/snd and issue hw_params.\nUI:N - The attacker triggers the fault entirely with their own ioctl sequence on the PCM device; no action by any other user, no file to open, and no filesystem to mount is needed.\nS:U - The dangling pointer dereference and any resulting corruption occur within the kernel's own security authority on the same host, with no crossing of a VM, IOMMU, or sandbox boundary.\nC:H - This is effectively a use-after-free of a VMAP kernel stack combined with type confusion: slim_xfer_msg() interprets freed/recycled stack bytes as a struct slim_device and follows sbdev->ctrl, then reads through ctrl->dev, ctrl->sched, and ctrl->tid_idr, allowing an attacker who grooms the reclaimed stack to redirect reads to arbitrary kernel addresses and disclose their contents.\nI:H - The type-confused controller pointer is used for writes — idr_alloc_cyclic() on ctrl->tid_idr, spin_lock_irqsave() on ctrl->txn_lock, and pm_runtime refcount updates on ctrl->dev — and culminates in the indirect call ctrl->xfer_msg(ctrl, txn) through a function pointer read from attacker-groomable freed stack memory, giving control-flow hijack and privilege escalation potential.\nA:H - The commit documents a reproducible kernel paging-request fault (\"Unable to handle kernel paging request at virtual address ffff8000847cbad4\") on every audio playback attempt, and the same stale pointer is also dereferenced from wcd934x_slim_irq_handler() in interrupt context, so an unprivileged user can deterministically oops the kernel and deny service."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/base/regmap/regmap-slimbus.c"],"versions":[{"version":"7d6f7fb053ad543da74119df3c4cd7bb46220471","lessThan":"c0f05129e5734ff3fd14b2c242709314d9ca5433","status":"affected","versionType":"git"},{"version":"7d6f7fb053ad543da74119df3c4cd7bb46220471","lessThan":"02d3041caaa3fe4dd69e5a8afd1ac6b918ddc6a1","status":"affected","versionType":"git"},{"version":"7d6f7fb053ad543da74119df3c4cd7bb46220471","lessThan":"d979639f099c6e51f06ce4dd8d8e56364d6c17ba","status":"affected","versionType":"git"},{"version":"7d6f7fb053ad543da74119df3c4cd7bb46220471","lessThan":"8143e4075d131c528540417a51966f6697be14eb","status":"affected","versionType":"git"},{"version":"7d6f7fb053ad543da74119df3c4cd7bb46220471","lessThan":"2664bfd8969d1c43dcbe3ea313f130dfa6b74f4c","status":"affected","versionType":"git"},{"version":"7d6f7fb053ad543da74119df3c4cd7bb46220471","lessThan":"a16e92f8d7dc7371e68f17a9926cb92d2244be7b","status":"affected","versionType":"git"},{"version":"7d6f7fb053ad543da74119df3c4cd7bb46220471","lessThan":"b65f3303349eaee333e47d2a99045aa12fa0c3a7","status":"affected","versionType":"git"},{"version":"7d6f7fb053ad543da74119df3c4cd7bb46220471","lessThan":"434f7349a1f00618a620b316f091bd13a12bc8d2","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/base/regmap/regmap-slimbus.c"],"versions":[{"version":"4.16","status":"affected"},{"version":"0","lessThan":"4.16","status":"unaffected","versionType":"semver"},{"version":"5.4.302","lessThanOrEqual":"5.4.*","status":"unaffected","versionType":"semver"},{"version":"5.10.247","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.197","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.159","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.117","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.58","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.17.8","lessThanOrEqual":"6.17.*","status":"unaffected","versionType":"semver"},{"version":"6.18","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"5.4.302"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"5.10.247"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"5.15.197"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"6.1.159"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"6.6.117"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"6.12.58"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"6.17.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"6.18"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/c0f05129e5734ff3fd14b2c242709314d9ca5433"},{"url":"https://git.kernel.org/stable/c/02d3041caaa3fe4dd69e5a8afd1ac6b918ddc6a1"},{"url":"https://git.kernel.org/stable/c/d979639f099c6e51f06ce4dd8d8e56364d6c17ba"},{"url":"https://git.kernel.org/stable/c/8143e4075d131c528540417a51966f6697be14eb"},{"url":"https://git.kernel.org/stable/c/2664bfd8969d1c43dcbe3ea313f130dfa6b74f4c"},{"url":"https://git.kernel.org/stable/c/a16e92f8d7dc7371e68f17a9926cb92d2244be7b"},{"url":"https://git.kernel.org/stable/c/b65f3303349eaee333e47d2a99045aa12fa0c3a7"},{"url":"https://git.kernel.org/stable/c/434f7349a1f00618a620b316f091bd13a12bc8d2"}],"title":"regmap: slimbus: fix bus_context pointer in regmap init calls","x_generator":{"engine":"bippy-1.2.0"}}}}