Browse Source

nfc: nci: Fix nci_core_conn_close

nci_core_conn_close was not retrieving a conn_info using the correct
connection id.

Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Christophe Ricard 9 years ago
parent
commit
de5ea8517c
2 changed files with 3 additions and 1 deletions
  1. 1 0
      net/nfc/nci/core.c
  2. 2 1
      net/nfc/nci/rsp.c

+ 1 - 0
net/nfc/nci/core.c

@@ -646,6 +646,7 @@ static void nci_core_conn_close_req(struct nci_dev *ndev, unsigned long opt)
 
 
 int nci_core_conn_close(struct nci_dev *ndev, u8 conn_id)
 int nci_core_conn_close(struct nci_dev *ndev, u8 conn_id)
 {
 {
+	ndev->cur_conn_id = conn_id;
 	return __nci_request(ndev, nci_core_conn_close_req, conn_id,
 	return __nci_request(ndev, nci_core_conn_close_req, conn_id,
 			     msecs_to_jiffies(NCI_CMD_TIMEOUT));
 			     msecs_to_jiffies(NCI_CMD_TIMEOUT));
 }
 }

+ 2 - 1
net/nfc/nci/rsp.c

@@ -271,7 +271,8 @@ static void nci_core_conn_close_rsp_packet(struct nci_dev *ndev,
 
 
 	pr_debug("status 0x%x\n", status);
 	pr_debug("status 0x%x\n", status);
 	if (status == NCI_STATUS_OK) {
 	if (status == NCI_STATUS_OK) {
-		conn_info = nci_get_conn_info_by_conn_id(ndev, ndev->cur_id);
+		conn_info = nci_get_conn_info_by_conn_id(ndev,
+							 ndev->cur_conn_id);
 		if (conn_info) {
 		if (conn_info) {
 			list_del(&conn_info->list);
 			list_del(&conn_info->list);
 			devm_kfree(&ndev->nfc_dev->dev, conn_info);
 			devm_kfree(&ndev->nfc_dev->dev, conn_info);