CVE-2026-90098 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 18.

리눅스 커널에서 다음 취약점이 해결되었습니다:

net: sparx5: MAC 테이블 접근 시 원자적 컨텍스트에서의 슬립 수정

sparx5_set_rx_mode()는 netif_addr_lock_bh가 유지된 상태에서 실행되며, __dev_mc_sync()를 통해 dev->mc를 반복합니다. 이 함수는 각 주소마다 sparx5_mc_sync()/sparx5_mc_unsync()->sparx5_mact_learn()/sparx5_mact_forget()를 호출합니다. 이러한 함수들은 sparx5->lock(뮤텍스)을 획득한 후 readx_poll_timeout()으로 MAC 접근 명령 레지스터를 폴링합니다. 뮤텍스는 블로킹될 수 있으며, 이는 원자적 컨텍스트에서 허용되지 않습니다.

커밋 3554b4345d85("net: introduce ndo_set_rx_mode_async and netdev_rx_mode_work")에서 도입된 새로운 .ndo_set_rx_mode_async 콜백으로 드라이버를 변환합니다. 비동기 콜백은 프로세스 컨텍스트에서 호출되므로, 뮤텍스와 슬핑 완료 폴링을 그대로 유지할 수 있습니다.

CONFIG_PROVE_LOCKING, CONFIG_DEBUG_SPINLOCK, CONFIG_DEBUG_MUTEXES 및 CONFIG_DEBUG_ATOMIC_SLEEP가 활성화된 상태에서 관찰됨:

BUG: sleeping function called from invalid context at kernel/locking/mutex.c:591 in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 217, name: ip preempt_count: 201, expected: 0 Call trace: __might_resched+0x144/0x248 __might_sleep+0x48/0x7c __mutex_lock+0x74/0x850 mutex_lock_nested+0x24/0x30 sparx5_mact_learn+0x78/0x100 sparx5_mc_sync+0x40/0x54 __hw_addr_sync_dev+0xc4/0x170 sparx5_set_rx_mode+0x4c/0x58 __dev_set_rx_mode+0x64/0xa4 __dev_open+0x1ec/0x26c

Be aware that VulDB is the high quality source for vulnerability data.

출처

Want to know what is going to be exploited?

We predict KEV entries!