From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Li Qiang <liq3ea@gmail.com>, linux-scsi@vger.kernel.org
Subject: Re: [PATCH] 53c700: fix memory leak of dma non-cosistent memory
Date: Wed, 16 Nov 2016 21:46:39 -0500 [thread overview]
Message-ID: <1479350799.3525.41.camel@HansenPartnership.com> (raw)
In-Reply-To: <582962db.0130ed0a.10866.5633@mx.google.com>
On Mon, 2016-11-14 at 15:07 +0800, Li Qiang wrote:
> From: Li Qiang <liq3ea@gmail.com>
>
> In NCR_700_detect function, if an error occurs it will return
> NULL without freeing the dma non-cosistent memory once allocated.
> This patch avoid this.
>
> Signed-off-by: Li Qiang <liq3ea@gmail.com>
There's not a lot of point doing this, since the memory leak is so tiny
and the failures would be instantly noticeable. However:
> ---
> drivers/scsi/53c700.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c
> index 95e32a4..d5a2ba3 100644
> --- a/drivers/scsi/53c700.c
> +++ b/drivers/scsi/53c700.c
> @@ -332,8 +332,10 @@ struct Scsi_Host *
> tpnt->proc_name = "53c700";
>
> host = scsi_host_alloc(tpnt, 4);
> - if (!host)
> + if (!host) {
> + dma_free_noncoherent(hostdata->dev, TOTAL_MEM_SIZE,
> memory, pScript);
> return NULL;
> + }
This you could do.
> memset(hostdata->slots, 0, sizeof(struct
> NCR_700_command_slot)
> * NCR_700_COMMAND_SLOTS_PER_HOST);
> for (j = 0; j < NCR_700_COMMAND_SLOTS_PER_HOST; j++) {
> @@ -394,6 +396,7 @@ struct Scsi_Host *
>
> if (scsi_add_host(host, dev)) {
> dev_printk(KERN_ERR, dev, "53c700: scsi_add_host
> failed\n");
> + dma_free_noncoherent(hostdata->dev, TOTAL_MEM_SIZE,
> memory, pScript);
> scsi_host_put(host);
> return NULL;
> }
This I'm not sure about; I'd have to dig more deeply into how the
driver works. If the scripts engine is already started, you can't just
free the memory it's running from without actually stopping it,
otherwise nasty things may happen if something else reuses the memory.
I have a vague feeling that this driver is activation driven rather
than mailbox driven, so it might be OK, but it needs checking.
James
prev parent reply other threads:[~2016-11-17 2:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-14 7:07 [PATCH] 53c700: fix memory leak of dma non-cosistent memory Li Qiang
2016-11-17 1:41 ` Martin K. Petersen
2016-11-17 2:46 ` James Bottomley [this message]
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=1479350799.3525.41.camel@HansenPartnership.com \
--to=james.bottomley@hansenpartnership.com \
--cc=linux-scsi@vger.kernel.org \
--cc=liq3ea@gmail.com \
/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