Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: bna: prevent IOC timer rearm during teardown bna: prevent IOC timer rearm during teardown bnad_pci_remove() and the probe disable_ioceth path call timer_delete_sync() for ioc_timer, sem_timer and hb_timer, but not for iocpf_timer. bnad_iocpf_timeout() then takes bnad->bna_lock after free_netdev() has freed the struct bnad. Deleting iocpf_timer last does not fix this. sem_timer and iocpf_timer rearm each other: bnad_iocpf_sem_timeout() can arm iocpf_timer, and bnad_iocpf_timeout() arms sem_timer from bfa_ioc_hw_sem_get() when the semaphore is busy. timer_delete_sync() only waits out its own callback. bnad_ioceth_disable() can time out and leave that callback live. Shut all four IOC timers down with timer_shutdown_sync() on both paths, so a later mod_timer() is ignored. This issue was identified during our ongoing static-analysis research while reviewing kernel code.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected 1d32f7696286eef9e5644eb57e79a36756274357 before f04cbdfac9b8284146995ab7ba0d054ad1d20ec6; affected 1d32f7696286eef9e5644eb57e79a36756274357 before 28e32ace754b57534ef0ca0fb99bcbea5b13ba2a; affected 1d32f7696286eef9e5644eb57e79a36756274357 before 4d97a141e85a034566c33c7ed854c8a3e8a268f1; affected 1d32f7696286eef9e5644eb57e79a36756274357 before e09d1c6729ee4a7812128902d9274ff565f958b8; affected 1d32f7696286eef9e5644eb57e79a36756274357 before 77b1718e39e5c9f6956fb60807326af20baf889d |
| Linux / Linux | affected 2.6.38; unaffected 0 before 2.6.38; unaffected 6.6.160 through 6.6.*; unaffected 6.12.112 through 6.12.*; unaffected 6.18.55 through 6.18.*; unaffected 7.2.9 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/f04cbdfac9b8284146995ab7ba0d054ad1d20ec6
- https://git.kernel.org/stable/c/28e32ace754b57534ef0ca0fb99bcbea5b13ba2a
- https://git.kernel.org/stable/c/4d97a141e85a034566c33c7ed854c8a3e8a268f1
- https://git.kernel.org/stable/c/e09d1c6729ee4a7812128902d9274ff565f958b8
- https://git.kernel.org/stable/c/77b1718e39e5c9f6956fb60807326af20baf889d