{"id":"CVE-2026-43061","state":"PUBLISHED","title":"serial: 8250: Fix TX deadlock when using DMA","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nserial: 8250: Fix TX deadlock when using DMA\n\n`dmaengine_terminate_async` does not guarantee that the\n`__dma_tx_complete` callback will run. The callback is currently the\nonly place where `dma->tx_running` gets cleared. If the transaction is\ncanceled and the callback never runs, then `dma->tx_running` will never\nget cleared and we will never schedule new TX DMA transactions again.\n\nThis change makes it so we clear `dma->tx_running` after we terminate\nthe DMA transaction. This is \"safe\" because `serial8250_tx_dma_flush`\nis holding the UART port lock. The first thing the callback does is also\ngrab the UART port lock, so access to `dma->tx_running` is serialized.","publishedAt":"2026-05-05T15:17:27.079Z","updatedAt":"2026-05-23T16:06:10.956Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"7c47e637dfadfbc691dd297b91d81ef939ca2080","status":"affected","lessThan":"8190f9ab6ad90cb97652adbebd238b874a4ef70d","versionType":"git"},{"version":"bf3f395b9c37956eca866c9e1679769ed7dcce68","status":"affected","lessThan":"79a19bd936bb35f56ef0ccab1b3b59ebce8c762d","versionType":"git"},{"version":"d470522c597b73e63cca04f3012aec28185113b7","status":"affected","lessThan":"f76d91271bcacbd759a2e4ee3ea61faa6a727ccf","versionType":"git"},{"version":"5e00346deb7bf40a4cf70e3716ac8e9a2409eb55","status":"affected","lessThan":"d2719a0a9c3439abf67843a5504b7afccd9ded93","versionType":"git"},{"version":"c8a52c772c7c6de72257a435bcad03d3bb914a70","status":"affected","lessThan":"2a72403b985aea6b4aac3171830492f9a387f9e1","versionType":"git"},{"version":"9e512eaaf8f4008c44ede3dfc0fbc9d9c5118583","status":"affected","lessThan":"5f6b17562f03fc65c7d3474ef8f1959b19d1ca41","versionType":"git"},{"version":"9e512eaaf8f4008c44ede3dfc0fbc9d9c5118583","status":"affected","lessThan":"b5ad887339503103d0fbe9827b16ad287597c275","versionType":"git"},{"version":"9e512eaaf8f4008c44ede3dfc0fbc9d9c5118583","status":"affected","lessThan":"a424a34b8faddf97b5af41689087e7a230f79ba7","versionType":"git"},{"version":"bbec5998d7bd349730f59c959a8b00cfff816e34","status":"affected","versionType":"git"},{"version":"59f751db7f392fa7a58cbd972205982f7f4f5854","status":"affected","versionType":"git"},{"version":"5.10.235","status":"affected","lessThan":"5.10.253","versionType":"semver"},{"version":"5.15.179","status":"affected","lessThan":"5.15.203","versionType":"semver"},{"version":"6.1.129","status":"affected","lessThan":"6.1.167","versionType":"semver"},{"version":"6.6.79","status":"affected","lessThan":"6.6.130","versionType":"semver"},{"version":"6.12.16","status":"affected","lessThan":"6.12.78","versionType":"semver"},{"version":"5.4.291","status":"affected","lessThan":"5.5","versionType":"semver"},{"version":"6.13.4","status":"affected","lessThan":"6.14","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/tty/serial/8250/8250_dma.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.14","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.14","versionType":"semver"},{"version":"5.10.253","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.203","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.167","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.130","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.78","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.20","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.10","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/tty/serial/8250/8250_dma.c"]}],"references":["https://git.kernel.org/stable/c/8190f9ab6ad90cb97652adbebd238b874a4ef70d","https://git.kernel.org/stable/c/79a19bd936bb35f56ef0ccab1b3b59ebce8c762d","https://git.kernel.org/stable/c/f76d91271bcacbd759a2e4ee3ea61faa6a727ccf","https://git.kernel.org/stable/c/d2719a0a9c3439abf67843a5504b7afccd9ded93","https://git.kernel.org/stable/c/2a72403b985aea6b4aac3171830492f9a387f9e1","https://git.kernel.org/stable/c/5f6b17562f03fc65c7d3474ef8f1959b19d1ca41","https://git.kernel.org/stable/c/b5ad887339503103d0fbe9827b16ad287597c275","https://git.kernel.org/stable/c/a424a34b8faddf97b5af41689087e7a230f79ba7"],"weaknesses":[],"ingestedAt":"2026-10-29T20:11:57.932Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/43xxx/CVE-2026-43061.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-43061","state":"PUBLISHED","datePublished":"2026-05-05T15:17:27.079Z","dateUpdated":"2026-05-23T16:06:10.956Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-05-01T14:12:55.981Z"},"containers":{"cna":{"title":"serial: 8250: Fix TX deadlock when using DMA","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nserial: 8250: Fix TX deadlock when using DMA\n\n`dmaengine_terminate_async` does not guarantee that the\n`__dma_tx_complete` callback will run. The callback is currently the\nonly place where `dma->tx_running` gets cleared. If the transaction is\ncanceled and the callback never runs, then `dma->tx_running` will never\nget cleared and we will never schedule new TX DMA transactions again.\n\nThis change makes it so we clear `dma->tx_running` after we terminate\nthe DMA transaction. This is \"safe\" because `serial8250_tx_dma_flush`\nis holding the UART port lock. The first thing the callback does is also\ngrab the UART port lock, so access to `dma->tx_running` is serialized."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"7c47e637dfadfbc691dd297b91d81ef939ca2080","status":"affected","lessThan":"8190f9ab6ad90cb97652adbebd238b874a4ef70d","versionType":"git"},{"version":"bf3f395b9c37956eca866c9e1679769ed7dcce68","status":"affected","lessThan":"79a19bd936bb35f56ef0ccab1b3b59ebce8c762d","versionType":"git"},{"version":"d470522c597b73e63cca04f3012aec28185113b7","status":"affected","lessThan":"f76d91271bcacbd759a2e4ee3ea61faa6a727ccf","versionType":"git"},{"version":"5e00346deb7bf40a4cf70e3716ac8e9a2409eb55","status":"affected","lessThan":"d2719a0a9c3439abf67843a5504b7afccd9ded93","versionType":"git"},{"version":"c8a52c772c7c6de72257a435bcad03d3bb914a70","status":"affected","lessThan":"2a72403b985aea6b4aac3171830492f9a387f9e1","versionType":"git"},{"version":"9e512eaaf8f4008c44ede3dfc0fbc9d9c5118583","status":"affected","lessThan":"5f6b17562f03fc65c7d3474ef8f1959b19d1ca41","versionType":"git"},{"version":"9e512eaaf8f4008c44ede3dfc0fbc9d9c5118583","status":"affected","lessThan":"b5ad887339503103d0fbe9827b16ad287597c275","versionType":"git"},{"version":"9e512eaaf8f4008c44ede3dfc0fbc9d9c5118583","status":"affected","lessThan":"a424a34b8faddf97b5af41689087e7a230f79ba7","versionType":"git"},{"version":"bbec5998d7bd349730f59c959a8b00cfff816e34","status":"affected","versionType":"git"},{"version":"59f751db7f392fa7a58cbd972205982f7f4f5854","status":"affected","versionType":"git"},{"version":"5.10.235","status":"affected","lessThan":"5.10.253","versionType":"semver"},{"version":"5.15.179","status":"affected","lessThan":"5.15.203","versionType":"semver"},{"version":"6.1.129","status":"affected","lessThan":"6.1.167","versionType":"semver"},{"version":"6.6.79","status":"affected","lessThan":"6.6.130","versionType":"semver"},{"version":"6.12.16","status":"affected","lessThan":"6.12.78","versionType":"semver"},{"version":"5.4.291","status":"affected","lessThan":"5.5","versionType":"semver"},{"version":"6.13.4","status":"affected","lessThan":"6.14","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/tty/serial/8250/8250_dma.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.14","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.14","versionType":"semver"},{"version":"5.10.253","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.203","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.167","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.130","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.78","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.20","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.10","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/tty/serial/8250/8250_dma.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/8190f9ab6ad90cb97652adbebd238b874a4ef70d"},{"url":"https://git.kernel.org/stable/c/79a19bd936bb35f56ef0ccab1b3b59ebce8c762d"},{"url":"https://git.kernel.org/stable/c/f76d91271bcacbd759a2e4ee3ea61faa6a727ccf"},{"url":"https://git.kernel.org/stable/c/d2719a0a9c3439abf67843a5504b7afccd9ded93"},{"url":"https://git.kernel.org/stable/c/2a72403b985aea6b4aac3171830492f9a387f9e1"},{"url":"https://git.kernel.org/stable/c/5f6b17562f03fc65c7d3474ef8f1959b19d1ca41"},{"url":"https://git.kernel.org/stable/c/b5ad887339503103d0fbe9827b16ad287597c275"},{"url":"https://git.kernel.org/stable/c/a424a34b8faddf97b5af41689087e7a230f79ba7"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-05-23T16:06:10.956Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10.235","versionEndExcluding":"5.10.253"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15.179","versionEndExcluding":"5.15.203"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1.129","versionEndExcluding":"6.1.167"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6.79","versionEndExcluding":"6.6.130"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.12.16","versionEndExcluding":"6.12.78"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.14","versionEndExcluding":"6.18.20"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.14","versionEndExcluding":"6.19.10"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.14","versionEndExcluding":"7.0"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.4.291"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.13.4"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}