{"id":29066,"date":"2026-09-25T20:31:47","date_gmt":"2026-09-25T12:31:47","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97910"},"modified":"2026-09-25T20:31:47","modified_gmt":"2026-09-25T12:31:47","slug":"cve-2026-97910","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97910","title":{"rendered":"CVE-2026-97910 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nASoC: sprd: validate"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ASoC: sprd: validate compress buffer sizes against fixed allocations<\/p>\n<p>sprd_platform_compr_open() allocates the stage 0 IRAM buffer (32K data<br \/>\narea) and the stage 1 DDR buffer (2M data area) with fixed sizes, but<br \/>\nsprd_platform_compr_copy() derives all copy lengths from the user<br \/>\ncontrolled runtime-&gt;fragment_size and the write() count, never<br \/>\ncomparing them against the physical buffer sizes. The compress core<br \/>\nonly checks fragment_size * fragments for an u32 overflow in<br \/>\nsnd_compress_check_input(), so a local user can configure a logical<br \/>\nbuffer of up to ~4GB via SNDRV_COMPRESS_SET_PARAMS, far exceeding the<br \/>\nfixed allocations.<\/p>\n<p>A fragment_size larger than the 32K IRAM data area makes the stage 0<br \/>\ncopy_from_user() overflow past the IRAM allocation, and a buffer_size<br \/>\nlarger than the 2M DDR buffer makes the wrapping copy at the end of<br \/>\nsprd_platform_compr_copy() write fully user controlled data past the<br \/>\nbuffer. No SNDRV_PCM_TRIGGER_START is needed, a write() in SETUP<br \/>\nstate reaches the copy callback directly.<\/p>\n<p>Reject parameters that do not fit into the fixed buffers in<br \/>\nset_params(), and fix the advertised max fragment size: 128K never<br \/>\nfitted into the 32K IRAM buffer. The caps values may have been carried over<br \/>\nfrom the qdsp6 driver, which allocates its buffers according to the<br \/>\nadvertised maxima, unlike this driver. With 32K as max fragment size<br \/>\nthe advertised limits are self-consistent: 32K * 64 = 2M equals the<br \/>\nDDR buffer size.<\/p>\n<p>Discovered by Atuin &#8211; Automated Vulnerability Discovery Engine.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ASoC: sprd: validate compress buffer sizes against fixed allocations<\/p>\n<p>sprd_platform_compr_open() allocates the stage 0 IRAM buffer <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29066","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29066","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=29066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29066"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}