aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire/fw-sbp2.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/firewire/fw-sbp2.c')
-rw-r--r--drivers/firewire/fw-sbp2.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
index e5a2571a3671..661a5b66f661 100644
--- a/drivers/firewire/fw-sbp2.c
+++ b/drivers/firewire/fw-sbp2.c
@@ -606,13 +606,17 @@ static void sbp2_release_target(struct kref *kref)
606 struct sbp2_logical_unit *lu, *next; 606 struct sbp2_logical_unit *lu, *next;
607 struct Scsi_Host *shost = 607 struct Scsi_Host *shost =
608 container_of((void *)tgt, struct Scsi_Host, hostdata[0]); 608 container_of((void *)tgt, struct Scsi_Host, hostdata[0]);
609 struct fw_device *device = fw_device(tgt->unit->device.parent);
609 610
610 list_for_each_entry_safe(lu, next, &tgt->lu_list, link) { 611 list_for_each_entry_safe(lu, next, &tgt->lu_list, link) {
611 if (lu->sdev) 612 if (lu->sdev)
612 scsi_remove_device(lu->sdev); 613 scsi_remove_device(lu->sdev);
613 614
614 sbp2_send_management_orb(lu, tgt->node_id, lu->generation, 615 if (!fw_device_is_shutdown(device))
615 SBP2_LOGOUT_REQUEST, lu->login_id, NULL); 616 sbp2_send_management_orb(lu, tgt->node_id,
617 lu->generation, SBP2_LOGOUT_REQUEST,
618 lu->login_id, NULL);
619
616 fw_core_remove_address_handler(&lu->address_handler); 620 fw_core_remove_address_handler(&lu->address_handler);
617 list_del(&lu->link); 621 list_del(&lu->link);
618 kfree(lu); 622 kfree(lu);