CVE-2026-80828 in Linux
요약
\~에 의해 VulDB • 2026. 09. 04.
리눅스 커널에서 다음 취약점이 해결되었습니다:
ALSA: usb-audio - 시스템 리sume 오류 후 완전한 정리 수행
시스템resume 실패로 인해 카드가 재부팅할 때까지 사용할 수 없게 될 수 있습니다. usb_audio_resume()는 snd_usb_pcm_resume() 또는 snd_usb_mixer_resume()이 실패할 경우 err_out으로 점프합니다. 에러 경로는 out: 블록을 건너뛰는데, 이 블록은 D0 상태를 복원하고 chip->num_suspended_intf를 감소시킵니다.
카드는 SNDRV_CTL_POWER_D3hot 상태에 머무르므로 이후 제어 접근이 snd_power_ref_and_wait()에서 차단됩니다. USB 코어는 인터페이스 resume 콜백 오류를 로깅합니다. 해당 콜백은 재시도되지 않으므로, 나중에 실행되는 콜백은 건너뛴 정리를 완료할 수 없습니다.
usb_audio_suspend()는 성공을 반환하기 전에 num_suspended_intf를 증가시킵니다. 시스템resume 콜백은 구성 요소 resume가 실패하더라도 시스템suspend 카운트를 소모해야 합니다. 그렇지 않으면, 고립된 카운트가 이후의 suspend 및 resume 주기를 왜곡합니다.
이 정리는 runtime-resume 오류에는 적용하지 마십시오. 런타임 PM은 다른 suspend 콜백 없이 -EAGAIN 또는 -EBUSY를 재시도할 수 있습니다. 카운트는 해당 suspended 인터페이스를 계속 설명해야 합니다. 기타 runtime-resume 오류는 PM 코어에서 runtime_error를 래치하며 즉시 콜백을 재시도하지 않습니다.
시스템resume 에러 경로의 두 부분 모두 오랜 기간 존재해 왔습니다. 커밋 88a8516a2128a("ALSA: usbaudio: implement USB autosuspend")는 D0 복원 이후에 err_out을 도입했습니다. 그 후 커밋 862b2509d157c("ALSA: usb-audio: Fix inconsistent card PM state after resume")에서 num_suspended_intf--를 out: 블록 안으로 이동시켰습니다. 이제 에러 경로는 두 작업 모두 건너뛰게 됩니다.
에러 경로에 도달하기 위해 서드파티 코드는 필요하지 않습니다. snd_usb_mixer_resume()는 mixer status URB가 있는 장치의 경우 usb_submit_urb() 결과를 반환하는 snd_usb_mixer_activate()에서 종료됩니다. 또한 mixer->private_resume 훅은 scarlett2_init_notify()를 통해 실패할 수 있습니다. snd_usb_pcm_resume()는 UAC3 파워 도메인에 SET_CUR 요청을 수행합니다. 장치에서 요청이 스톨(stall)되면 -EPIPE 또는 -EIO를 반환할 수 있습니다.
시스템suspend가 0이 아닌 경우에만 out:으로 구성 요소 오류를 라우팅하십시오. runtime-resume 오류는 err_out을 통해 계속 반환하십시오. 이후의 구성 요소 resume 단계들은 여전히 건너뛰어집니다. 원래 오류는 USB 코어로 전달됩니다. 장치가 복구되지 않은 경우 후속 전송은 실패할 수 있습니다.
저는 Audient iD14 MkI에서 out-of-tree 진단 mixer resume 훅을 사용하여 시스템resume 실패를 재현했습니다. 패치되지 않은 커널에 -EIO를 주입하면 제어 리더들이 snd_power_ref_and_wait()에서 인터럽트 불가능한 상태(uninterruptible sleep)에 빠졌으며, 이는 재부팅할 때까지 지속되었습니다. 이 패치를 적용하면 동일한 실패 상황에서 제어 접근이 복원되었습니다. 또한 결함 주입을 비활성화한 후 두 번째 시스템 suspend 및 resume도 성공했습니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.