lkml.org 
[lkml]   [2012]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[24/90] SCSI: mpt2sas: Release spinlock for the raid device list before blocking it
    3.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com>

    commit 30c43282f3d347f47f9e05199d2b14f56f3f2837 upstream.

    Added code to release the spinlock that is used to protect the
    raid device list before calling a function that can block. The
    blocking was causing a reschedule, and subsequently it is tried
    to acquire the same lock, resulting in a panic (NMI Watchdog
    detecting a CPU lockup).

    Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/scsi/mpt2sas/mpt2sas_scsih.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
    +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
    @@ -6425,6 +6425,7 @@ _scsih_mark_responding_raid_device(struc
    } else
    sas_target_priv_data = NULL;
    raid_device->responding = 1;
    + spin_unlock_irqrestore(&ioc->raid_device_lock, flags);
    starget_printk(KERN_INFO, raid_device->starget,
    "handle(0x%04x), wwid(0x%016llx)\n", handle,
    (unsigned long long)raid_device->wwid);
    @@ -6435,16 +6436,16 @@ _scsih_mark_responding_raid_device(struc
    */
    _scsih_init_warpdrive_properties(ioc, raid_device);
    if (raid_device->handle == handle)
    - goto out;
    + return;
    printk(KERN_INFO "\thandle changed from(0x%04x)!!!\n",
    raid_device->handle);
    raid_device->handle = handle;
    if (sas_target_priv_data)
    sas_target_priv_data->handle = handle;
    - goto out;
    + return;
    }
    }
    - out:
    +
    spin_unlock_irqrestore(&ioc->raid_device_lock, flags);
    }




    \
     
     \ /
      Last update: 2012-01-24 01:03    [W:0.023 / U:88.900 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site