CVE-2026-98859
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
HID: multitouch: zatrzymaj ponowne uruchomienie timera zwolnienia po usunięciu
mt_remove() wyłącza licznik czasu Sticky Finger przed zatrzymaniem
sprzęt:
timer_delete_sync(&td->release_timer);
sysfs_remove_group(&hdev->dev.kobj, &mt_attribute_group);
hid_hw_stop(hdev);
timer_delete_sync() czeka na działające wywołanie zwrotne i usuwa timer z kolejki,
ale to nie powstrzymuje timera od ponownego uzbrojenia. Transport jest
w tym momencie nadal dostarcza raporty, a ścieżka raportu uzbraja je:
if (aplikacja->dziwactwa i MT_QUIRK_STICKY_FINGERS) {
if (td->mt_io_flags i MT_IO_SLOTS_MASK)
mod_timer(&td->timer_wydania,
jiffies + msecs_to_jiffies(100));
Dlatego zwrócił raport, który przybył po timer_delete_sync().
pozostawia timer w kolejce. td jest przydzielany za pomocą devm_kzalloc() przeciwko
hdev->dev, więc jest zwalniany, gdy sterownik jest zwolniony, po mt_remove()
powraca. Gdy licznik czasu zostanie później uruchomiony, mt_expired_timeout()
dereferuje uwolniony td:
struktura mt_device *td = timer_container_of(td, t, release_timer);
struktura urządzenie_ukryte *hdev = td->hdev;
if (test_and_set_bit_lock(MT_IO_FLAGS_RUNNING, &td->mt_io_flags))
Samo przeniesienie porzucenia po funkcji hid_hw_stop() nie rozwiązuje tego problemu
własne, ponieważ mt_expired_timeout() wywołuje funkcję mt_release_contacts(), która
idzie hdev->wejścia; licznik czasu nadal musi zostać wcześniej wyciszony
hid_hw_stop() niszczy urządzenia wejściowe.
Zamiast tego użyj timer_shutdown_sync(), co dodatkowo powoduje późniejsze wykonanie
mod_timer() nie daje żadnego efektu, więc nie trzeba rezygnować z żadnego ograniczenia kolejności
przeciwko drugiemu. Jest to wzorzec ostatecznego rozbicia, jakim była funkcja
wprowadzono i hid-wiimote już go używa z tego samego powodu.
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org