sbp2_unblock(tgt);
 
        list_for_each_entry_safe(lu, next, &tgt->lu_list, link) {
-               if (lu->sdev)
+               if (lu->sdev) {
                        scsi_remove_device(lu->sdev);
-
+                       scsi_device_put(lu->sdev);
+               }
                sbp2_send_management_orb(lu, tgt->node_id, lu->generation,
                                SBP2_LOGOUT_REQUEST, lu->login_id, NULL);
 
        if (IS_ERR(sdev))
                goto out_logout_login;
 
-       scsi_device_put(sdev);
-
        /* Unreported error during __scsi_add_device() */
        smp_rmb(); /* get current card generation */
        if (generation != device->card->generation) {
                scsi_remove_device(sdev);
+               scsi_device_put(sdev);
                goto out_logout_login;
        }