struct smp_irk  *remote_irk;
        u8              *link_key;
        unsigned long   flags;
+       u8              method;
 
        /* Secure Connections variables */
        u8                      local_pk[64];
        struct hci_conn *hcon = conn->hcon;
        struct l2cap_chan *chan = conn->smp;
        struct smp_chan *smp = chan->data;
-       u8 method;
        u32 passkey = 0;
        int ret = 0;
 
         * table.
         */
        if (!(auth & SMP_AUTH_MITM))
-               method = JUST_CFM;
+               smp->method = JUST_CFM;
        else
-               method = get_auth_method(smp, local_io, remote_io);
+               smp->method = get_auth_method(smp, local_io, remote_io);
 
        /* Don't confirm locally initiated pairing attempts */
-       if (method == JUST_CFM && test_bit(SMP_FLAG_INITIATOR, &smp->flags))
-               method = JUST_WORKS;
+       if (smp->method == JUST_CFM && test_bit(SMP_FLAG_INITIATOR,
+                                               &smp->flags))
+               smp->method = JUST_WORKS;
 
        /* Don't bother user space with no IO capabilities */
-       if (method == JUST_CFM && hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT)
-               method = JUST_WORKS;
+       if (smp->method == JUST_CFM &&
+           hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT)
+               smp->method = JUST_WORKS;
 
        /* If Just Works, Continue with Zero TK */
-       if (method == JUST_WORKS) {
+       if (smp->method == JUST_WORKS) {
                set_bit(SMP_FLAG_TK_VALID, &smp->flags);
                return 0;
        }
 
        /* Not Just Works/Confirm results in MITM Authentication */
-       if (method != JUST_CFM) {
+       if (smp->method != JUST_CFM) {
                set_bit(SMP_FLAG_MITM_AUTH, &smp->flags);
                if (hcon->pending_sec_level < BT_SECURITY_HIGH)
                        hcon->pending_sec_level = BT_SECURITY_HIGH;
        /* If both devices have Keyoard-Display I/O, the master
         * Confirms and the slave Enters the passkey.
         */
-       if (method == OVERLAP) {
+       if (smp->method == OVERLAP) {
                if (hcon->role == HCI_ROLE_MASTER)
-                       method = CFM_PASSKEY;
+                       smp->method = CFM_PASSKEY;
                else
-                       method = REQ_PASSKEY;
+                       smp->method = REQ_PASSKEY;
        }
 
        /* Generate random passkey. */
-       if (method == CFM_PASSKEY) {
+       if (smp->method == CFM_PASSKEY) {
                memset(smp->tk, 0, sizeof(smp->tk));
                get_random_bytes(&passkey, sizeof(passkey));
                passkey %= 1000000;
                set_bit(SMP_FLAG_TK_VALID, &smp->flags);
        }
 
-       if (method == REQ_PASSKEY)
+       if (smp->method == REQ_PASSKEY)
                ret = mgmt_user_passkey_request(hcon->hdev, &hcon->dst,
                                                hcon->type, hcon->dst_type);
-       else if (method == JUST_CFM)
+       else if (smp->method == JUST_CFM)
                ret = mgmt_user_confirm_request(hcon->hdev, &hcon->dst,
                                                hcon->type, hcon->dst_type,
                                                passkey, 1);