lkml.org 
[lkml]   [2008]   [Jul]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 41/47] SCSI: mptspi: fix oops in mptspi_dv_renegotiate_work()
    2.6.25-stable review patch.  If anyone has any objections, please let us
    know.

    ------------------
    From: James Bottomley <James.Bottomley@HansenPartnership.com>

    commit 081a5bcb39b455405d58f79bb3c9398a9d4477ed upstream

    The problem here is that if the ioc faults too early in the bring up
    sequence (as it usually does for an irq routing problem), ioc_reset gets
    called before the scsi host is even allocated. This causes an oops when
    it later schedules a renegotiation. Fix this by checking ioc->sh before
    trying to renegotiate.

    Cc: Eric Moore <Eric.Moore@lsi.com>
    Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/message/fusion/mptspi.c | 9 +++++++--
    1 file changed, 7 insertions(+), 2 deletions(-)

    --- a/drivers/message/fusion/mptspi.c
    +++ b/drivers/message/fusion/mptspi.c
    @@ -1266,13 +1266,18 @@ mptspi_dv_renegotiate(struct _MPT_SCSI_H
    static int
    mptspi_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
    {
    - struct _MPT_SCSI_HOST *hd = shost_priv(ioc->sh);
    int rc;

    rc = mptscsih_ioc_reset(ioc, reset_phase);

    - if (reset_phase == MPT_IOC_POST_RESET)
    + /* only try to do a renegotiation if we're properly set up
    + * if we get an ioc fault on bringup, ioc->sh will be NULL */
    + if (reset_phase == MPT_IOC_POST_RESET &&
    + ioc->sh) {
    + struct _MPT_SCSI_HOST *hd = shost_priv(ioc->sh);
    +
    mptspi_dv_renegotiate(hd);
    + }

    return rc;
    }
    --


    \
     
     \ /
      Last update: 2008-07-23 01:35    [W:0.029 / U:29.116 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site