{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-40986","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-07-12T12:17:45.605Z","datePublished":"2024-07-12T12:37:31.800Z","dateUpdated":"2026-08-05T11:34:26.008Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:34:26.008Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndmaengine: xilinx: xdma: Fix data synchronisation in xdma_channel_isr()\n\nRequests the vchan lock before using xdma->stop_request."}],"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 race is driven through local client interfaces of the XDMA dmaengine provider — ALSA PCM trigger-stop/hw_free and V4L2 stop/DMA-timeout paths on /dev/snd/pcmC* and /dev/video* — which require local access to the system. There is no remote or network-facing path into drivers/dma/xilinx/xdma.c.\nAC:L - The attacker controls the terminate side of the race (issuing stream stop/STREAMOFF or PCM stop whenever it chooses) and can influence the interrupt side by selecting transfer/period sizes, and the attempt can be repeated indefinitely at no cost until the unlocked stop_requested read is mistimed.\nPR:L - Only an unprivileged local account with ordinary access to the audio or video device node backed by the XDMA channels is needed — no capabilities or root, since dmaengine_terminate_*/dmaengine_synchronize are invoked on behalf of normal PCM/V4L2 operations.\nUI:N - The attacker triggers the start/stop transfer cycle entirely on its own; no action by another user or administrator is required.\nS:U - The corruption occurs in kernel memory (dma_pool descriptor blocks and client DMA buffers) managed by the same kernel security authority; no VM, sandbox, or IOMMU boundary is crossed.\nC:H - Losing the last-interrupt synchronization lets descriptor blocks and data buffers be freed and reused while the PCIe engine is still reading them, so card-to-host and host-to-card transfers can expose recycled kernel memory contents to the device and to subsequent users of those pages.\nI:H - The DMA engine can continue writing into freed/recycled dma_pool memory and follow stale or attacker-groomed descriptor contents, giving a memory-corruption write primitive against arbitrary kernel-mapped memory that is a classic path to control-flow hijack.\nA:H - The same use-after-free of live descriptor blocks reliably produces kernel memory corruption and oops/panic, and the missed completion also stalls xdma_synchronize() on its one-second timeout on every terminate."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/dma/xilinx/xdma.c"],"versions":[{"version":"6a40fb8245965b481b4dcce011cd63f20bf91ee0","lessThan":"8e1f54e4a3f3207c9dc68bb5000603b75802e7f0","status":"affected","versionType":"git"},{"version":"6a40fb8245965b481b4dcce011cd63f20bf91ee0","lessThan":"462237d2d93fc9e9221d1cf9f773954d27da83c0","status":"affected","versionType":"git"},{"version":"582ce5d734190d74e5ce9cd711cf6e964e1e7b29","status":"affected","versionType":"git"},{"version":"6.8.9","lessThan":"6.9","status":"affected","versionType":"semver"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/dma/xilinx/xdma.c"],"versions":[{"version":"6.9","status":"affected"},{"version":"0","lessThan":"6.9","status":"unaffected","versionType":"semver"},{"version":"6.9.7","lessThanOrEqual":"6.9.*","status":"unaffected","versionType":"semver"},{"version":"6.10","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":"6.9","versionEndExcluding":"6.9.7"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.9","versionEndExcluding":"6.10"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8.9"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/8e1f54e4a3f3207c9dc68bb5000603b75802e7f0"},{"url":"https://git.kernel.org/stable/c/462237d2d93fc9e9221d1cf9f773954d27da83c0"}],"title":"dmaengine: xilinx: xdma: Fix data synchronisation in xdma_channel_isr()","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-02T04:39:55.848Z"},"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/8e1f54e4a3f3207c9dc68bb5000603b75802e7f0","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/462237d2d93fc9e9221d1cf9f773954d27da83c0","tags":["x_transferred"]}]},{"metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-40986","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-09-10T17:02:03.948638Z"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-09-11T17:34:20.818Z"}}]}}