• Stefan Richter's avatar
    firewire: sbp2: remove obsolete reference counting · 6ff8147d
    Stefan Richter authored
    Since commit 0278ccd9 "firewire: sbp2:
    fix panic after rmmod with slow targets", the lifetime of an sbp2_target
    instance does no longer extent past the return of sbp2_remove().
    Therefore it is no longer necessary to call fw_unit_get/put() and
    fw_device_get/put() in sbp2_probe/remove().
    
    Furthermore, said commit also ensures that lu->work is not going to be
    executed or requeued at a time when the sbp2_target is no longer in use.
    Hence there is no need for sbp2_target reference counting for lu->work.
    
    Other concurrent contexts:
    
      - Processes which access the sysfs of the SCSI host device or of one
        of its subdevices are safe because these interfaces are all removed
        by scsi_remove_device/host() in sbp2_release_target().
    
      - SBP-2 command block ORB transactions are finished when
        scsi_remove_device() in sbp2_release_target() returns.
    
      - SBP-2 management ORB transactions are finished when
        cancel_delayed_work_sync(&lu->work) before sbp2_release_target()
        returns.
    Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    6ff8147d
sbp2.c 47.1 KB