lkml.org 
[lkml]   [2016]   [Jul]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.19.y-ckt 12/99] Revert "scsi: fix soft lockup in scsi_remove_target() on module removal"
    Date
    3.19.8-ckt23 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Johannes Thumshirn <jthumshirn@suse.de>

    commit 305c2e71b3d733ec065cb716c76af7d554bd5571 upstream.

    Now that we've done a more comprehensive fix with the intermediate
    target state we can remove the previous hack introduced with commit
    90a88d6ef88e ("scsi: fix soft lockup in scsi_remove_target() on module
    removal").

    Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/scsi/scsi_sysfs.c | 6 ++----
    1 file changed, 2 insertions(+), 4 deletions(-)

    diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
    index c6126e0..64f11fa 100644
    --- a/drivers/scsi/scsi_sysfs.c
    +++ b/drivers/scsi/scsi_sysfs.c
    @@ -1148,19 +1148,17 @@ static void __scsi_remove_target(struct scsi_target *starget)
    void scsi_remove_target(struct device *dev)
    {
    struct Scsi_Host *shost = dev_to_shost(dev->parent);
    - struct scsi_target *starget, *last_target = NULL;
    + struct scsi_target *starget;
    unsigned long flags;

    restart:
    spin_lock_irqsave(shost->host_lock, flags);
    list_for_each_entry(starget, &shost->__targets, siblings) {
    if (starget->state == STARGET_DEL ||
    - starget->state == STARGET_REMOVE ||
    - starget == last_target)
    + starget->state == STARGET_REMOVE)
    continue;
    if (starget->dev.parent == dev || &starget->dev == dev) {
    kref_get(&starget->reap_ref);
    - last_target = starget;
    starget->state = STARGET_REMOVE;
    spin_unlock_irqrestore(shost->host_lock, flags);
    __scsi_remove_target(starget);
    --
    2.7.4
    \
     
     \ /
      Last update: 2016-07-07 21:41    [W:3.557 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site