🇰🇷 한글 설명
Linux 커널의 host1x GPU 드라이버에서 버퍼 객체(BO)의 참조 횟수 관리 오류로 인해 메모리 해제가 불가능한 순환 참조 문제가 발생했습니다. 캐시된 매핑이 버퍼 객체를 계속 참조하고 있어 객체가 해제되지 않는 문제를 해결하기 위해 캐시 측에서 약한 참조(weak reference)를 사용하도록 수정되었습니다.
💡 쉬운 설명
컴퓨터 메모리를 사용한 뒤 돌려줘야 하는데, 메모리를 관리하는 기록이 서로를 붙잡고 있어 메모리가 영원히 비워지지 않는 문제가 있었습니다. 이 패치는 기록 방식의 순서를 바꿔서 사용이 끝난 메모리가 정상적으로 비워질 수 있게 만듭니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
gpu: host1x: Allow entries in BO caches to be freed
When a buffer object is pinned via host1x_bo_pin() with a cache, the
resulting mapping is kept in the cache so it can be reused on subsequent
pins. Each mapping held a reference to the underlying host1x_bo (taken
in tegra_bo_pin / gather_bo_pin), so as long as a mapping was cached,
the bo itself could not be freed.
However, the only way to remove the cached mapping was through the free
path of the buffer object. This meant that if a bo got cached, it could
never get freed again.
Resolve the circularity by holding a weak reference to the bo from the
cache side. This is done by having the .pin callbacks not bump the bo's
refcount -- instead the common Host1x bo code does so, except for the
cache reference.
Also move the remove-cache-mapping-on-free code into a common function
inside Host1x code. This is only called from the TegraDRM GEM buffers
since those are the only ones that can be cached at the moment.
📍 영향받는 시스템
Linux kernel (host1x GPU driver components)
⚔️ 공격 벡터
직접적인 공격보다는 시스템 리소스를 점진적으로 점유하여 메모리 부족을 유발하는 DoS(서비스 거부) 가능성
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이상인지 확인