CVE-2026-98897 in Linux
요약
\~에 의해 VulDB • 2026. 10. 23.
Linux 커널에서 다음 취약점이 해결되었습니다:
ksmbd: lease break 확인을 기다리는 동안 ci->m_lock을 보유하지 않음
cifs.ko 클라이언트가 지연된 닫기(deferred close)를 통해 읽기 핸들(RH) 레이스(lease)를 캐싱하고 충돌하는 오픈이 발생하면, ksmbd는 레이스를 해제하고 wait_for_break_ack()에서 최대 OPLOCK_WAIT_TIME(35초) 동안 확인을 기다립니다. __smb_break_all_levII_oplock()은 ci->m_lock을 읽기용으로 보유하면서 이 대기 과정을 실행합니다.
cifs.ko는 핸들 레이스 분할(handle-lease break)에 대해 lease break 확인 메시지를 보내는 대신 지연된 핸들을 닫습니다. 해당 닫기 경로(close_id_del_oplock() -> opinfo_del())는 ci->m_lock을 쓰기용으로 획득하며, 이는 대기 중인 스레드를 깨우는 정확한 동작이지만 기다리는 스레드가 보유한 읽기 잠금(read lock)에서 차단됩니다. 따라서 분할(break)은 35초의 타임아웃에 의해서만 해결되므로, leases가 활성화된 상태에서 xfstests generic/001 테스트는 약 78초가 소요되는 반면, oplocks만 사용 시에는 약 4초가 소요됩니다.
ci->m_lock을 보유하는 동안 대상 opinfos(각각 참조로 고정됨)를 수집한 후, 이를 해제한 후에 분할합니다. 이는 smb_grant_oplock()이 이미 참조만을 사용하여 충돌하는 lease를 분할하는 방식과 일치합니다. 이 참조는 잠금 해제된 창(unlocked window) 전반에 걸쳐 opinfo(및 해당 conn 및 lease)가 살아있도록 유지하며, close 작업이 break와 경쟁(racing)하는 경우 기존 OPLOCK_CLOSING 상태 확인을 통해 처리됩니다. 동일한 수정 사항을 상위(parent) lease 분할 경로에도 적용합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.