Эх сурвалжийг харах

NFC: nci: Move close ops call in nci_close_device

When closing the device some data (proprietary commands)
might be sent. The core state machine needs to be set for
correct command execution.

Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Christophe Ricard 10 жил өмнө
parent
commit
0e70cba71f

+ 6 - 4
net/nfc/nci/core.c

@@ -440,6 +440,12 @@ static int nci_close_device(struct nci_dev *ndev)
 	set_bit(NCI_INIT, &ndev->flags);
 	set_bit(NCI_INIT, &ndev->flags);
 	__nci_request(ndev, nci_reset_req, 0,
 	__nci_request(ndev, nci_reset_req, 0,
 		      msecs_to_jiffies(NCI_RESET_TIMEOUT));
 		      msecs_to_jiffies(NCI_RESET_TIMEOUT));
+
+	/* After this point our queues are empty
+	 * and no works are scheduled.
+	 */
+	ndev->ops->close(ndev);
+
 	clear_bit(NCI_INIT, &ndev->flags);
 	clear_bit(NCI_INIT, &ndev->flags);
 
 
 	del_timer_sync(&ndev->cmd_timer);
 	del_timer_sync(&ndev->cmd_timer);
@@ -447,10 +453,6 @@ static int nci_close_device(struct nci_dev *ndev)
 	/* Flush cmd wq */
 	/* Flush cmd wq */
 	flush_workqueue(ndev->cmd_wq);
 	flush_workqueue(ndev->cmd_wq);
 
 
-	/* After this point our queues are empty
-	 * and no works are scheduled. */
-	ndev->ops->close(ndev);
-
 	/* Clear flags */
 	/* Clear flags */
 	ndev->flags = 0;
 	ndev->flags = 0;