Commit 3c1c0f5d authored by Vincent Cuissard's avatar Vincent Cuissard Committed by Samuel Ortiz

NFC: NCI: Fix nci_register_device init sequence

All contexts have to be initiliazed before calling
nfc_register_device otherwise it is possible to call
nci_dev_up before ending the nci_register_device
function. In such case kernel will crash on non
initialized variables.
Signed-off-by: default avatarVincent Cuissard <cuissard@marvell.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent cfdbeeaf
...@@ -759,10 +759,6 @@ int nci_register_device(struct nci_dev *ndev) ...@@ -759,10 +759,6 @@ int nci_register_device(struct nci_dev *ndev)
struct device *dev = &ndev->nfc_dev->dev; struct device *dev = &ndev->nfc_dev->dev;
char name[32]; char name[32];
rc = nfc_register_device(ndev->nfc_dev);
if (rc)
goto exit;
ndev->flags = 0; ndev->flags = 0;
INIT_WORK(&ndev->cmd_work, nci_cmd_work); INIT_WORK(&ndev->cmd_work, nci_cmd_work);
...@@ -770,7 +766,7 @@ int nci_register_device(struct nci_dev *ndev) ...@@ -770,7 +766,7 @@ int nci_register_device(struct nci_dev *ndev)
ndev->cmd_wq = create_singlethread_workqueue(name); ndev->cmd_wq = create_singlethread_workqueue(name);
if (!ndev->cmd_wq) { if (!ndev->cmd_wq) {
rc = -ENOMEM; rc = -ENOMEM;
goto unreg_exit; goto exit;
} }
INIT_WORK(&ndev->rx_work, nci_rx_work); INIT_WORK(&ndev->rx_work, nci_rx_work);
...@@ -800,6 +796,10 @@ int nci_register_device(struct nci_dev *ndev) ...@@ -800,6 +796,10 @@ int nci_register_device(struct nci_dev *ndev)
mutex_init(&ndev->req_lock); mutex_init(&ndev->req_lock);
rc = nfc_register_device(ndev->nfc_dev);
if (rc)
goto destroy_rx_wq_exit;
goto exit; goto exit;
destroy_rx_wq_exit: destroy_rx_wq_exit:
...@@ -808,9 +808,6 @@ int nci_register_device(struct nci_dev *ndev) ...@@ -808,9 +808,6 @@ int nci_register_device(struct nci_dev *ndev)
destroy_cmd_wq_exit: destroy_cmd_wq_exit:
destroy_workqueue(ndev->cmd_wq); destroy_workqueue(ndev->cmd_wq);
unreg_exit:
nfc_unregister_device(ndev->nfc_dev);
exit: exit:
return rc; return rc;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment