All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.