All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bui Quang Minh <minhquangbui99@gmail.com>
To: Oliver Neukum <oneukum@suse.de>
Cc: linux-usb@vger.kernel.org, a.darwish@linutronix.de,
	bigeasy@linutronix.de, gregkh@linuxfoundation.org,
	linux-kernel@vger.kernel.org, stern@rowland.harvard.edu,
	syzkaller-bugs@googlegroups.com, tglx@linutronix.de
Subject: Re: [PATCH v2] can: mcba_usb: Fix memory leak when cancelling urb
Date: Mon, 11 Jan 2021 21:31:20 +0700	[thread overview]
Message-ID: <20210111143120.GA2769@minh> (raw)
In-Reply-To: <7d6dc09fedc84f9fce942d85c34d5cd41931bbf6.camel@suse.de>

On Mon, Jan 11, 2021 at 01:00:31PM +0100, Oliver Neukum wrote:
> Am Montag, den 11.01.2021, 10:49 +0000 schrieb Bui Quang Minh:
> > In mcba_usb_read_bulk_callback(), when we don't resubmit or fails to
> > resubmit the urb, we need to deallocate the transfer buffer that is
> > allocated in mcba_usb_start().
> > 
> > Reported-by: syzbot+57281c762a3922e14dfe@syzkaller.appspotmail.com
> > Signed-off-by: Bui Quang Minh <minhquangbui99@gmail.com>
> > ---
> > v1: add memory leak fix when not resubmitting urb
> > v2: add memory leak fix when failing to resubmit urb
> > 
> >  drivers/net/can/usb/mcba_usb.c | 11 ++++++++---
> >  1 file changed, 8 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/net/can/usb/mcba_usb.c b/drivers/net/can/usb/mcba_usb.c
> > index df54eb7d4b36..30236e640116 100644
> > --- a/drivers/net/can/usb/mcba_usb.c
> > +++ b/drivers/net/can/usb/mcba_usb.c
> > @@ -584,6 +584,8 @@ static void mcba_usb_read_bulk_callback(struct urb *urb)
> >  	case -EPIPE:
> >  	case -EPROTO:
> >  	case -ESHUTDOWN:
> > +		usb_free_coherent(urb->dev, urb->transfer_buffer_length,
> > +				  urb->transfer_buffer, urb->transfer_dma);
> >  		return;
> >  
> 
> Can you call usb_free_coherent() in what can be hard IRQ context?

You are right, I digged in the code and saw some comments that on some
architectures, usb_free_coherent() cannot be called in hard IRQ context.
I see the usb_free_coherent() is called in write_bulk_callback too. I will
send a patch that uses usb_anchor to keep track of these urbs and cleanup 
the transfer buffer later in disconnect().

Thank you for your review,
Quang Minh.

  reply	other threads:[~2021-01-11 14:32 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-11 10:49 [PATCH v2] can: mcba_usb: Fix memory leak when cancelling urb Bui Quang Minh
2021-01-11 12:00 ` Oliver Neukum
2021-01-11 14:31   ` Bui Quang Minh [this message]
2021-01-12  6:42     ` Minh Bùi Quang
2021-01-21 15:19       ` Bui Quang Minh

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=20210111143120.GA2769@minh \
    --to=minhquangbui99@gmail.com \
    --cc=a.darwish@linutronix.de \
    --cc=bigeasy@linutronix.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=oneukum@suse.de \
    --cc=stern@rowland.harvard.edu \
    --cc=syzkaller-bugs@googlegroups.com \
    --cc=tglx@linutronix.de \
    /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.