linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Luben Tuikov <luben_tuikov@adaptec.com>
To: "Moore, Eric Dean" <Emoore@lsil.com>
Cc: Christoph Hellwig <hch@lst.de>,
	linux-scsi@vger.kernel.org, fukuchi.masao@jp.fujitsu.com
Subject: Re: [PATCH] fix dma mapping leak in fusion
Date: Tue, 17 Aug 2004 14:18:01 -0400	[thread overview]
Message-ID: <41224BD9.9060808@adaptec.com> (raw)
In-Reply-To: <0E3FA95632D6D047BA649F95DAB60E5704DE66BB@exa-atlanta>

Moore, Eric Dean wrote:
> Ok - your proposed change will Opps the driver.
> 
> Sequence to oops:
> 1.SCSI midlayer detects command timeout and issue abort
> message to fusion MPT driver.
> 2.Fusion MPT driver issues abort message to IOC and returns
> SCSI midlayer with FAILED status.
> 3.SCSI midlayer gives up the operation and call
> scsi_release_buffers()to free buffers; this
> routine does "cmd->request_buffer=NULL;"
> 4.Fusion MPT driver initiates IOC reset and calls
> mptscsih_flush_running_cmds() to cancel SCSI command.
> 5.Oops - occurs when calling pci_unmap_sg when request_buffer=NULL.

Points 2 and 4 -- once ABORT TASK is sent, the device server
should NOT return status of the aborted task, regardless
of the service response of the TMF. (SAM, 7.2)

			Luben


> 
> The current fix testing for scsi_device_online
> was provided last April by Fukuchi Masao.
> 
> Eric Moore
> 
> 
> On Tuesday, August 17, 2004 10:17 AM, Christoph Hellwig wrote:
>  >
>  > stop fusion from leaking dma maps when the device has been offlined
>  >
>  >
>  > --- 1.13/drivers/message/fusion/linux_compat.h       
>  > 2004-06-23 16:48:43 +02:00
>  > +++ edited/drivers/message/fusion/linux_compat.h     
>  > 2004-08-17 20:09:21 +02:00
>  > @@ -3,16 +3,4 @@
>  >  #ifndef FUSION_LINUX_COMPAT_H
>  >  #define FUSION_LINUX_COMPAT_H
>  > 
>  > -#include <linux/version.h>
>  > -#include <scsi/scsi_device.h>
>  > -
>  > -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,6))
>  > -static int inline scsi_device_online(struct scsi_device *sdev)
>  > -{
>  > -     return sdev->online;
>  > -}
>  > -#endif
>  > -
>  > -
>  > -/*}-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>  > -=-=-=-=-=-=-=-=*/
>  >  #endif /* _LINUX_COMPAT_H */
>  > ===== drivers/message/fusion/mptscsih.c 1.45 vs edited =====
>  > --- 1.45/drivers/message/fusion/mptscsih.c    2004-08-03
>  > 01:01:01 +02:00
>  > +++ edited/drivers/message/fusion/mptscsih.c  2004-08-17
>  > 20:02:54 +02:00
>  > @@ -1019,19 +1019,18 @@
>  >                        * Do OS callback
>  >                        * Free driver resources (chain, msg buffers)
>  >                        */
>  > -                     if (scsi_device_online(SCpnt->device)) {
>  > -                             if (SCpnt->use_sg) {
>  > -                                     pci_unmap_sg(ioc->pcidev,
>  > -                                             (struct
>  > scatterlist *) SCpnt->request_buffer,
>  > -                                             SCpnt->use_sg,
>  > -                                            
>  > SCpnt->sc_data_direction);
>  > -                             } else if (SCpnt->request_bufflen) {
>  > -                                     pci_unmap_single(ioc->pcidev,
>  > -                                             SCpnt->SCp.dma_handle,
>  > -                                             SCpnt->request_bufflen,
>  > -                                            
>  > SCpnt->sc_data_direction);
>  > -                             }
>  > +                     if (SCpnt->use_sg) {
>  > +                             pci_unmap_sg(ioc->pcidev,
>  > +                                     (struct scatterlist *)
>  > SCpnt->request_buffer,
>  > +                                     SCpnt->use_sg,
>  > +                                     SCpnt->sc_data_direction);
>  > +                     } else if (SCpnt->request_bufflen) {
>  > +                             pci_unmap_single(ioc->pcidev,
>  > +                                     SCpnt->SCp.dma_handle,
>  > +                                     SCpnt->request_bufflen,
>  > +                                     SCpnt->sc_data_direction);
>  >                       }
>  > +
>  >                       SCpnt->result = DID_RESET << 16;
>  >                       SCpnt->host_scribble = NULL;
>  > 
>  > -
>  > To unsubscribe from this list: send the line "unsubscribe
>  > linux-scsi" in
>  > the body of a message to majordomo@vger.kernel.org
>  > More majordomo info at  http://vger.kernel.org/majordomo-info.html
>  >
> -
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


  parent reply	other threads:[~2004-08-17 18:18 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-17 16:42 [PATCH] fix dma mapping leak in fusion Moore, Eric Dean
2004-08-17 16:46 ` Christoph Hellwig
2004-08-17 17:17   ` Christoph Hellwig
2004-08-17 18:18 ` Luben Tuikov [this message]
  -- strict thread matches above, loose matches on Subject: below --
2004-08-31 14:42 Moore, Eric Dean
2004-08-30 22:29 Moore, Eric Dean
2004-08-31 12:56 ` Luben Tuikov
2004-08-31 13:14   ` Luben Tuikov
2004-08-23 15:56 Moore, Eric Dean
2004-08-28 19:02 ` Christoph Hellwig
2004-08-20 15:01 Moore, Eric Dean
2004-08-23  1:41 ` Masao Fukuchi
2004-08-19 14:47 Moore, Eric Dean
2004-08-20  3:05 ` Masao Fukuchi
2004-08-17 16:16 Christoph Hellwig
2004-08-19  3:01 ` Masao Fukuchi
2004-08-19 10:14   ` Christoph Hellwig
2004-08-19 13:14     ` Masao Fukuchi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=41224BD9.9060808@adaptec.com \
    --to=luben_tuikov@adaptec.com \
    --cc=Emoore@lsil.com \
    --cc=fukuchi.masao@jp.fujitsu.com \
    --cc=hch@lst.de \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).