CVE-2026-93098 in Linux
요약
\~에 의해 VulDB • 2026. 09. 18.
리눅스 커널에서 다음 취약점이 해결되었습니다:
rpmsg: glink - 드라이버 분리 시 엔드포인트 제거 중 데드락 수정
드라이버 분리 과정에서 디바이스 코어는 전체 드라이버의 remove 콜백 체인 동안 디바이스 뮤텍스를 유지합니다. 이 정리 과정의 일환으로 rpmsg 엔드포인트가 삭제될 때, GLINK 엔드포인트 제거 구현은 하위 rpmsg 장치를 unregister하려고 시도합니다. 해당 등록 해제 작업은 device_del()을 호출하며, 이는 스택 상단에서 이미 보유 중인 동일한 디바이스 뮤텍스를 다시 획득하려다 무한정 rmmod이 멈추는 현상을 유발합니다.
데드락은 다음과 같은 콜 체인으로 나타납니다:
[<0>] device_del+0x44/0x414 <- 동일한 뮤텍스 획득 시도
[<0>] device_unregister+0x18/0x34
[<0>] rpmsg_unregister_device+0x28/0x4c
[<0>] qcom_glink_remove_rpmsg_device+0x70/0xc0
[<0>] qcom_glink_destroy_ept+0x58/0xbc
[<0>] rpmsg_dev_remove+0x50/0x60
[<0>] device_remove+0x4c/0x80
[<0>] device_release_driver_internal+0x1cc/0x228 <- 디바이스 뮤텍스 획득
[<0>] driver_detach+0x4c/0x98
[<0>] bus_remove_driver+0x6c/0xbc
[<0>] driver_unregister+0x30/0x60
[<0>] unregister_rpmsg_driver+0x10/0x1c
[<0>] fastrpc_exit+0x28/0x38 [fastrpc]
[<0>] __arm64_sys_delete_module+0x1b8/0x294
[<0>] invoke_syscall+0x48/0x10c
[<0>] el0_svc_common.constprop.0+0xc0/0xe0
[<0>] do_el0_svc+0x1c/0x28
[<0>] el0_svc+0x34/0x108
[<0>] el0t_64_sync_handler+0xa0/0xe4
[<0>] el0t_64_sync+0x198/0x19c
엔드포인트 제거 내부의 rpmsg 장치 등록 해제는 중복입니다. 엔드포인트 삭제가 트리거되는 두 가지 컨텍스트 모두에서:
- 드라이버 분리 경로: 드라이어 코어가 이미 rpmsg 장치를 정리합니다. - 채널 닫기 경로: 엔드포인트 삭제에 도달하기 전에 rpmsg 장치가 이미 unregister됩니다.
중복된 등록 해제를 제거하여 데드락을 수정합니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.