NFC: st21nfca: Fix logic when setting session_id
authorChristophe Ricard <christophe.ricard@gmail.com>
Mon, 28 Jul 2014 16:11:37 +0000 (18:11 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Sun, 7 Sep 2014 21:56:49 +0000 (23:56 +0200)
If dev_num >= ST21NFCA_NUM_DEVICES, the driver was returning an incorrect
success return code.

Once dev_num is set, it was not stated as busy.

Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/nfc/st21nfca/st21nfca.c

index b6ad8c902f8df7c8aa5e1ca0c431bf73a4c52018..438e06e6eb6a15f87bddef7555485281055023c8 100644 (file)
@@ -905,8 +905,11 @@ int st21nfca_hci_probe(void *phy_id, struct nfc_phy_ops *phy_ops,
         * persistent info to discriminate 2 identical chips
         */
        dev_num = find_first_zero_bit(dev_mask, ST21NFCA_NUM_DEVICES);
+
        if (dev_num >= ST21NFCA_NUM_DEVICES)
-               goto err_alloc_hdev;
+               return -ENODEV;
+
+       set_bit(dev_num, dev_mask);
 
        scnprintf(init_data.session_id, sizeof(init_data.session_id), "%s%2x",
                  "ST21AH", dev_num);