{"id":41117,"date":"2026-10-19T00:32:13","date_gmt":"2026-10-18T16:32:13","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98645"},"modified":"2026-10-19T00:32:13","modified_gmt":"2026-10-18T16:32:13","slug":"cve-2026-98645","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98645","title":{"rendered":"CVE-2026-98645 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nHID: winwing: fix use"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>HID: winwing: fix use-after-free in force feedback teardown<\/p>\n<p>winwing_init_ff() passes the driver&#8217;s private data, allocated with<br \/>\ndevm_kzalloc() in winwing_probe(), as the effect context to<br \/>\ninput_ff_create_memless(). The memoryless force-feedback core takes<br \/>\nownership of that pointer and frees it with kfree() from<br \/>\ninput_ff_destroy() (ml_ff_destroy()) when the input device is<br \/>\ndestroyed.<\/p>\n<p>Freeing a devm-managed allocation with kfree() is an invalid free, and<br \/>\nthe same object is then released again by devres when the HID device is<br \/>\ntorn down, a double free. As the allocation also embeds the LED class<br \/>\ndevices, their timers and work item live on freed memory and the slab<br \/>\ngets corrupted. This triggers on unbind, rmmod, hot-unplug and on system<br \/>\nsuspend, where the firmware cache walks the now-corrupt devres list.<br \/>\nKASAN reports:<\/p>\n<p>  BUG: KASAN: invalid-free in input_ff_destroy<br \/>\n  Allocated by task N:<br \/>\n    winwing_probe<\/p>\n<p>Pass NULL as the memless context instead and fetch the driver data from<br \/>\nthe input device in winwing_play_effect(): the HID core already stores<br \/>\nthe hid_device as the input device&#8217;s drvdata. The force-feedback core<br \/>\nthen owns nothing that it must not free.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>HID: winwing: fix use-after-free in force feedback teardown<\/p>\n<p>winwing_init_ff() passes the driver&#8217;s private data, allocated with<br \/>\ndev<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41117","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}