{"id":17332,"date":"2026-09-05T02:31:00","date_gmt":"2026-09-04T18:31:00","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80828"},"modified":"2026-09-05T02:31:00","modified_gmt":"2026-09-04T18:31:00","slug":"cve-2026-80828","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80828","title":{"rendered":"CVE-2026-80828 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: usb-audio: Comp"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ALSA: usb-audio: Complete cleanup after system-resume errors<\/p>\n<p>A failed system resume can leave the card unusable until reboot.<br \/>\nusb_audio_resume() jumps to err_out when snd_usb_pcm_resume() or<br \/>\nsnd_usb_mixer_resume() fails. The error path skips the out: block, which<br \/>\nrestores D0 and decrements chip-&gt;num_suspended_intf.<\/p>\n<p>The card stays in SNDRV_CTL_POWER_D3hot, so later control access blocks in<br \/>\nsnd_power_ref_and_wait(). USB core logs an interface resume callback error.<br \/>\nIt does not retry that callback, so a later callback cannot complete the<br \/>\nskipped cleanup.<\/p>\n<p>usb_audio_suspend() increments num_suspended_intf before returning success.<br \/>\nA system-resume callback must consume the system-suspend count even if a<br \/>\ncomponent resume fails. Otherwise, the stranded count skews later suspend<br \/>\nand resume cycles.<\/p>\n<p>Do not apply this cleanup to runtime-resume errors. Runtime PM can retry<br \/>\n-EAGAIN or -EBUSY without another suspend callback. The count must continue<br \/>\nto describe that suspended interface. Other runtime-resume errors latch<br \/>\nruntime_error in the PM core and do not cause an immediate callback retry.<\/p>\n<p>Both parts of the system-resume error path are longstanding. Commit<br \/>\n88a8516a2128a (&#8220;ALSA: usbaudio: implement USB autosuspend&#8221;) introduced<br \/>\nerr_out past the D0 restore. Commit 862b2509d157c (&#8220;ALSA: usb-audio: Fix<br \/>\ninconsistent card PM state after resume&#8221;) later moved<br \/>\nnum_suspended_intf&#8211; into the out: block. The error path now skips both<br \/>\noperations.<\/p>\n<p>No third-party code is needed to reach the error path.<br \/>\nsnd_usb_mixer_resume() ends in snd_usb_mixer_activate(), which returns the<br \/>\nresult of usb_submit_urb() for devices that have a mixer status URB. Its<br \/>\nmixer-&gt;private_resume hook can also fail through scarlett2_init_notify().<br \/>\nsnd_usb_pcm_resume() issues a SET_CUR request to a UAC3 power domain. It<br \/>\ncan return -EPIPE or -EIO when the device stalls the request.<\/p>\n<p>Route a component error through out: only when system_suspend is nonzero.<br \/>\nContinue to return runtime-resume errors through err_out. Later component<br \/>\nresume stages remain skipped. The original error still reaches USB core.<br \/>\nA later transfer can fail if the device did not recover.<\/p>\n<p>I reproduced the system-resume failure on an Audient iD14 MkI with an<br \/>\nout-of-tree diagnostic mixer resume hook. An injected -EIO on the unpatched<br \/>\ncore left control readers in uninterruptible sleep in<br \/>\nsnd_power_ref_and_wait() until a reboot. With this patch, the same failure<br \/>\nrestored control access. A second system suspend and resume also succeeded<br \/>\nafter I disabled fault injection.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ALSA: usb-audio: Complete cleanup after system-resume errors<\/p>\n<p>A failed system resume can leave the card unusable until reboot.<br \/>\nusb_<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-17332","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/17332","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=17332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}