From: Bongsu Jeon Date: Thu, 31 Dec 2020 02:59:26 +0000 (+0900) Subject: net: nfc: nci: Change the NCI close sequence X-Git-Tag: v5.15~1802^2~408 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f011539e723c737b74876ac47345e40270a3c384;p=platform%2Fkernel%2Flinux-starfive.git net: nfc: nci: Change the NCI close sequence If there is a NCI command in work queue after closing the NCI device at nci_unregister_device, The NCI command timer starts at flush_workqueue function and then NCI command timeout handler would be called 5 second after flushing the NCI command work queue and destroying the queue. At that time, the timeout handler would try to use NCI command work queue that is destroyed already. it will causes the problem. To avoid this abnormal situation, change the sequence to prevent the NCI command timeout handler from being called after destroying the NCI command work queue. Signed-off-by: Bongsu Jeon Signed-off-by: David S. Miller --- diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c index e64727e1..79bebf4 100644 --- a/net/nfc/nci/core.c +++ b/net/nfc/nci/core.c @@ -579,11 +579,11 @@ static int nci_close_device(struct nci_dev *ndev) clear_bit(NCI_INIT, &ndev->flags); - del_timer_sync(&ndev->cmd_timer); - /* Flush cmd wq */ flush_workqueue(ndev->cmd_wq); + del_timer_sync(&ndev->cmd_timer); + /* Clear flags */ ndev->flags = 0;