🇰🇷 한글 설명
Linux 커널의 drm/msm/adreno 드라이버에서 adreno_gpu_cleanup() 함수 호출 시 NULL 포인터 역참조가 발생하는 문제가 수정되었습니다. 이 결함은 GPU 초기화 실패 경로에서 커널 패닉(Oops)을 유발합니다.
💡 쉬운 설명
퀄컴 Adreno 그래픽 드라이버가 초기화에 실패할 때 빈 메모리 주소를 잘못 읽어 시스템이 멈출 수 있는 문제입니다. 커널 업데이트를 통해 이 오류가 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/msm/adreno: Fix null ptr access in adreno_gpu_cleanup()
Fix the below kernel panic due to null pointer access:
[ 18.504431] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000048
[ 18.513464] Mem abort info:
[ 18.516346] ESR = 0x0000000096000005
[ 18.520204] EC = 0x25: DABT (current EL), IL = 32 bits
[ 18.525706] SET = 0, FnV = 0
[ 18.528878] EA = 0, S1PTW = 0
[ 18.532117] FSC = 0x05: level 1 translation fault
[ 18.537138] Data abort info:
[ 18.540110] ISV = 0, ISS = 0x00000005
[ 18.544060] CM = 0, WnR = 0
[ 18.547109] user pgtable: 4k pages, 39-bit VAs, pgdp=0000000112826000
[ 18.553738] [0000000000000048] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
[ 18.562690] Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP
**Snip**
[ 18.696758] Call trace:
[ 18.699278] adreno_gpu_cleanup+0x30/0x88
[ 18.703396] a6xx_destroy+0xc0/0x130
[ 18.707066] a6xx_gpu_init+0x308/0x424
[ 18.710921] adreno_bind+0x178/0x288
[ 18.714590] component_bind_all+0xe0/0x214
[ 18.718797] msm_drm_bind+0x1d4/0x614
[ 18.722566] try_to_bring_up_aggregate_device+0x16c/0x1b8
[ 18.728105] __component_add+0xa0/0x158
[ 18.732048] component_add+0x20/0x2c
[ 18.735719] adreno_probe+0x40/0xc0
[ 18.739300] platform_probe+0xb4/0xd4
[ 18.743068] really_probe+0xfc/0x284
[ 18.746738] __driver_probe_device+0xc0/0xec
[ 18.751129] driver_probe_device+0x48/0x110
[ 18.755421] __device_attach_driver+0xa8/0xd0
[ 18.759900] bus_for_each_drv+0x90/0xdc
[ 18.763843] __device_attach+0xfc/0x174
[ 18.767786] device_initial_probe+0x20/0x2c
[ 18.772090] bus_probe_device+0x40/0xa0
[ 18.776032] deferred_probe_work_func+0x94/0xd0
[ 18.780686] process_one_work+0x190/0x3d0
[ 18.784805] worker_thread+0x280/0x3d4
[ 18.788659] kthread+0x104/0x1c0
[ 18.791981] ret_from_fork+0x10/0x20
[ 18.795654] Code: f9400408 aa0003f3 aa1f03f4 91142015 (f9402516)
[ 18.801913] ---[ end trace 0000000000000000 ]---
[ 18.809039] Kernel panic - not syncing: Oops: Fatal exception
Patchwork: https://patchwork.freedesktop.org/patch/515605/
📍 영향받는 시스템
Qualcomm Adreno GPU(msm DRM 드라이버)를 사용하는 ARM 기반 Linux 커널 시스템 (수정 전 커널 버전)
⚔️ 공격 벡터
원격 공격보다는 GPU 초기화 실패 상황에서 발생하는 안정성(DoS) 결함으로, 공격자가 로컬에서 드라이버 초기화 실패를 유도해 시스템을 패닉시킬 가능성이 있습니다.
🛡️ 대응 방법
Linux 커널을 해당 패치(drm/msm/adreno NULL 포인터 수정)가 포함된 최신 안정 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 공지나 패치 적용 커널 버전과 비교하여, 패치가 포함된 최신 커널인지 확인합니다.