Re: [PATCH] mpt3sas: Fix kernel panic occurs during expander reset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hannes & Christoph: Please comment on Sreekanth's proposed approach.

> During expander reset handling, the driver invokes kernel function
> scsi_host_find_tag() to obtain outstanding requests associated with
> the scsi host managed by the driver. Driver loops from tag value zero
> to hba queue depth to obtain the outstanding scmds. But when blk-mq is
> enabled then Kernel’s block layer may return stale entry for one or
> more requests. This may lead to Kernel panic if the returned value is
> inaccessible or the memory pointed by the returned value is reused.
>
> Reference of upstream discussion -
> https://patchwork.kernel.org/patch/10734933/
>
> Fix: Instead of calling scsi_host_find_tag() API for each and every
> smid(smid is tag +1) from one to shost->can_queue, now driver will
> call this API (to obtain the outstanding scmd) for only those smid's
> which are outstanding at the driver level.
>
> Driver will determine whether this smid is outstanding at driver level
> by looking into it's corresponding MPI request frame, if it's MPI
> request frame is empty then it means that this smid is free and no
> need to call scsi_host_find_tag() API for this smid.  By doing this
> driver will invoke scsi_host_find_tag() for only those tags which are
> outstanding at the driver level.
>
> Driver will check whether particular MPI request frame is empty or not
> by looking into the "DevHandle" field. If this field is zero then it
> means that this MPI request is empty. For active MPI request DevHandle
> must be non-zero.
>
> Also driver will memset the MPI request frame once the corresponding
> scmd is processed (i.e. just before calling scmd->done function).

-- 
Martin K. Petersen	Oracle Linux Engineering




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux