In the Linux kernel, the following vulnerability has been resolved: nfc: st-nci: Fix use after free bug in ndlcremove due to race condition This bug influences both stncii2cremove and stncispiremove. Take stncii2cremove as an example. In stncii2cprobe, it called ndlcprobe and bound &ndlc->smwork with lltndlcsmwork. When it calls ndlcrecv or timeout handler, it will finally call schedulework to start the work. When we call stncii2cremove to remove the driver, there may be a sequence as follows: Fix it by finishing the work before cleanup in ndlcremove CPU0 CPU1 |lltndlcsmwork stncii2cremove | ndlcremove | stnciremove | ncifreedevice| kfree(ndev) | //free ndlc->ndev | |lltndlcrcvqueue |ncirecvframe |//use ndlc->ndev