Linux: ieee802154: cc2520: fix FIFOP work use-after-free
What fixes it
- 4a1ba62a486a4c43af91d01661a95e82dc4aaefaLinuxCVE List
- 56a9919d8494fb118eebf167bef0622528fbf2e7LinuxCVE List
- 890a80d516a1447db5c21bf92841a82914ea897dLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
ieee802154: cc2520: fix FIFOP work use-after-free
The FIFOP interrupt handler queues cc2520_fifop_irqwork. On removal, cc2520_remove() only flushes the work. The devm-managed FIFOP IRQ remains active until after ->remove() returns and can queue the work again after that flush, allowing it to run after the private data is released.
Disable the work with disable_work_sync() instead of flushing it, so the handler can no longer queue it once removal begins. Destroy the buffer mutex last, since the worker and the stop callback invoked through ieee802154_unregister_hw() both take it.
Found by an in-house static analysis tool.
Text from CVE List
Affected versions 12
- Linuxaffected: 0da6bc8cc3417a5e452efb886ff2c61e72b743d6 before 4a1ba62a486a4c43af91d01661a95e82dc4aaefaCVE List
- Linuxaffected: 0da6bc8cc3417a5e452efb886ff2c61e72b743d6 before 56a9919d8494fb118eebf167bef0622528fbf2e7CVE List
- Linuxaffected: 0da6bc8cc3417a5e452efb886ff2c61e72b743d6 before c68fd52c73b676aee67020011e98fea125a978f4CVE List
- Linuxaffected: 0da6bc8cc3417a5e452efb886ff2c61e72b743d6 before 890a80d516a1447db5c21bf92841a82914ea897dCVE List
- Linuxaffected: 0da6bc8cc3417a5e452efb886ff2c61e72b743d6 before ff5891b266a7fc6a062710836be84f1cc19338b5CVE List
- Linuxaffected: 3.17CVE List
- Linuxunaffected: all versions before 3.17CVE List
- Linuxunaffected: 6.6.160 through 6.6.*CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2.7 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 5
- git.kernel.org/stable/c/4a1ba62a486a4c43af91d01661a95e82dc4aaefaReferencevia CVE List
- git.kernel.org/stable/c/56a9919d8494fb118eebf167bef0622528fbf2e7Referencevia CVE List
- git.kernel.org/stable/c/c68fd52c73b676aee67020011e98fea125a978f4Referencevia CVE List
- git.kernel.org/stable/c/890a80d516a1447db5c21bf92841a82914ea897dReferencevia CVE List
- git.kernel.org/stable/c/ff5891b266a7fc6a062710836be84f1cc19338b5Referencevia CVE List