🇰🇷 한글 설명
Linux 커널의 IPA(Internet Packet Accelerator) v5.0 이상에서 event ring index 필드의 레지스터 정의 오류로 인해 GSI 채널이 전송 완료를 신호할 수 없게 되는 버그입니다. 이로 인해 gsi_channel_trans_quiesce() 함수가 영구적으로 대기 상태에 빠지며, runtime suspend, system suspend, remoteproc stop이 행을 경험하고 IPA 데이터 경로가 완전히 비활성화됩니다.
💡 쉬운 설명
Linux 커널의 네트워크 가속 기능(IPA)에서 신호 전달 방식이 잘못 설정되어 시스템이 영구적으로 멈추는 버그입니다. 특히 절전 모드로 진입하거나 네트워크 기능을 사용하려고 할 때 시스템이 응답하지 않게 됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ipa: fix event ring index not programmed for IPA v5.0+
For IPA v5.0+, the event ring index field moved from CH_C_CNTXT_0 to
CH_C_CNTXT_1. The v5.0 register definition intended to define this
field in the CH_C_CNTXT_1 fmask array but used the old identifier of
ERINDEX instead of CH_ERINDEX.
Without a valid event ring, GSI channels could never signal transfer
completions. This caused gsi_channel_trans_quiesce() to block
forever in wait_for_completion().
At least for IPA v5.2 this resolves an issue seen where runtime
suspend, system suspend, and remoteproc stop all hanged forever. It
also meant the IPA data path was completely non functional.
📍 영향받는 시스템
Linux 커널 5.0+ (특히 IPA v5.0, v5.1, v5.2), Qualcomm IPA를 포함한 시스템
⚔️ 공격 벡터
로컬 공격자가 시스템을 부팅하거나 절전 모드에서 깨우거나 네트워크 기능을 트리거하여 서비스 거부(DoS) 유발 가능
🛡️ 대응 방법
Linux 커널을 5.0+ 이후의 패치된 버전으로 업데이트하여 CH_ERINDEX를 CH_C_CNTXT_1에서 올바르게 정의하도록 수정
🔧 검증 코드
설정에서 IPA가 enabled 상태(CONFIG_IPA=y)로 나타나면 커널 버전을 uname -r로 확인 후 5.0 이상인 경우 패치 업데이트 필요
cat /boot/config-$(uname -r) 2>/dev/null | grep -E 'CONFIG_IPA.*=y' && echo 'IPA enabled - check version' || echo 'IPA not enabled or config not found'