CVE-2023-52849 in Linux
요약
\~에 의해 VulDB • 2026. 05. 28.
리눅스 커널에서 다음 취약점이 해결되었습니다:
cxl/mem: 종료 순서 수정
Ira는 cxl_mock_mem을 제거하면 다음 트레이스(trace)와 함께 크래시가 발생한다고 보고했습니다:
BUG: kernel NULL pointer dereference, address: 0000000000000044 [..]
RIP: 0010:cxl_region_decode_reset+0x7f/0x180 [cxl_core]
[..]
Call Trace: cxl_region_detach+0xe8/0x210 [cxl_core]
cxl_decoder_kill_region+0x27/0x40 [cxl_core]
cxld_unregister+0x29/0x40 [cxl_core]
devres_release_all+0xb8/0x110 device_unbind_cleanup+0xe/0x70 device_release_driver_internal+0x1d2/0x210 bus_remove_device+0xd7/0x150 device_del+0x155/0x3e0 device_unregister+0x13/0x60 devm_release_action+0x4d/0x90 ? __pfx_unregister_port+0x10/0x10 [cxl_core]
delete_endpoint+0x121/0x130 [cxl_core]
devres_release_all+0xb8/0x110 device_unbind_cleanup+0xe/0x70 device_release_driver_internal+0x1d2/0x210 bus_remove_device+0xd7/0x150 device_del+0x155/0x3e0 ? lock_release+0x142/0x290 cdev_device_del+0x15/0x50 cxl_memdev_unregister+0x54/0x70 [cxl_core]
이 크래시는 서브시스템이 작업을 완료하기 전에 cxl_memdev의 드라이버 컨텍스트(@cxlds)가 초기화되어 발생합니다. 이는 궁극적으로 이 memdev가 속한 리전(region)들이 해제되면서 @cxlds를 역참조(de-reference)할 수 있다고 기대하기 때문에 발생합니다. 여기에서 그 예시를 볼 수 있습니다:
static int cxl_region_decode_reset(struct cxl_region *cxlr, int count) ... if (cxlds->rcd) goto endpoint_reset; ...
해결책은 memdev-device의 unregister 작업이 완료되고, 관련 의존성 스택 전체가 해제(unwinds)될 때까지 드라이버 컨텍스트를 유효하게 유지하는 것입니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.