From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>
Cc: Marc Kleine-Budde <mkl@pengutronix.de>,
Rhett Aultman <rhett.aultman@samsara.com>,
linux-usb@vger.kernel.org, linux-can <linux-can@vger.kernel.org>,
Oliver Neukum <oneukum@suse.com>,
Alan Stern <stern@rowland.harvard.edu>
Subject: Re: [PATCH v3 1/2] drivers: usb/core/urb: Add URB_FREE_COHERENT
Date: Tue, 21 Jun 2022 15:51:46 +0200 [thread overview]
Message-ID: <YrHM8mqG3WVVesk4@kroah.com> (raw)
In-Reply-To: <CAMZ6RqJvU=kvkucq0JiKgTVxTBJveCe47U-UCguKTdpLvh7kHw@mail.gmail.com>
On Sun, Jun 12, 2022 at 01:06:37AM +0900, Vincent MAILHOL wrote:
> On Sun. 12 juin 2022 at 00:31, Marc Kleine-Budde <mkl@pengutronix.de> wrote:
> > On 10.06.2022 17:33:35, Rhett Aultman wrote:
> > > From: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
> > >
> > > When allocating URB memory with kmalloc(), drivers can simply set the
> > > URB_FREE_BUFFER flag in urb::transfer_flags and that way, the memory
> > > will be freed in the background when killing the URB (for example with
> > > usb_kill_anchored_urbs()).
> > >
> > > However, there are no equivalent mechanism when allocating DMA memory
> > > (with usb_alloc_coherent()).
> > >
> > > This patch adds a new flag: URB_FREE_COHERENT. Setting this flag will
> > > cause the kernel to automatically call usb_free_coherent() on the
> > > transfer buffer when the URB is killed, similarly to how
> > > URB_FREE_BUFFER triggers a call to kfree().
> > >
> > > In order to have all the flags in numerical order, URB_DIR_IN is
> > > renumbered from 0x0200 to 0x0400 so that URB_FREE_COHERENT can reuse
> > > value 0x0200.
> > >
> > > Co-developed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
> > > Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
> > > Co-developed-by: Rhett Aultman <rhett.aultman@samsara.com>
> > > Signed-off-by: Rhett Aultman <rhett.aultman@samsara.com>
> > > Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
> >
> > FWIW:
> > Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
> >
> > This patch probably goes upstream via USB. Once this is in net I'll take
> > the 2nd patch.
>
> Question to Greg: can this first patch also be applied to the stable
> branches? Technically, this is a new feature but it will be used to
> solve several memory leaks on existing drivers (the gs_usb is only one
> example).
We take in dependent patches into the stable trees all the time when
needed, that's not an issue here.
What is an issue here is that this feels odd as other USB developers
said previously.
My big objection here is what validates that the size of the transfer
buffer here is really the size of the buffer to be freed? Is that
always set properly to be the length that was allocated? That might
just be the size of the last transfer using this buffer, but there is no
guarantee that I can see of that says this really is the length of the
allocated buffer, which is why usb_free_coherent() requires a size
parameter.
If that guarantee is always right, then we should be able to drop the
size option in usb_free_coherent(), and I don't think that's really
possible.
thanks,
greg k-h
next prev parent reply other threads:[~2022-06-21 13:51 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <alpine.DEB.2.22.394.2206031547001.1630869@thelappy>
2022-06-04 2:11 ` [PATCH] can: gs_usb: gs_usb_open/close( ) fix memory leak Vincent Mailhol
2022-06-04 2:26 ` Vincent MAILHOL
2022-06-04 14:08 ` Rhett Aultman
2022-06-04 14:41 ` [RFC PATCH] USB: core: urb: add new transfer flag URB_FREE_COHERENT Vincent Mailhol
2022-06-04 16:40 ` Alan Stern
2022-06-05 2:04 ` Vincent MAILHOL
2022-06-05 6:00 ` Oliver Neukum
2022-06-05 13:45 ` Vincent MAILHOL
2022-06-07 9:49 ` Oliver Neukum
2022-06-07 10:18 ` Vincent MAILHOL
2022-06-07 11:46 ` Oliver Neukum
2022-06-07 12:12 ` Vincent MAILHOL
2022-06-05 2:15 ` [RFC PATCH v2] usb: " Vincent Mailhol
2022-06-04 14:53 ` [PATCH] can: gs_usb: gs_usb_open/close( ) fix memory leak Vincent MAILHOL
2022-06-09 20:47 ` [PATCH v2 0/3] URB_FREE_COHERENT gs_usb memory leak fix Rhett Aultman
2022-06-09 20:47 ` [PATCH v2 1/3] drivers: usb/core/urb: Add URB_FREE_COHERENT Rhett Aultman
2022-06-10 0:18 ` Vincent MAILHOL
2022-06-10 10:46 ` Marc Kleine-Budde
2022-06-09 20:47 ` [PATCH v2 2/3] drivers: usb/core/urb: allow URB_FREE_COHERENT Rhett Aultman
2022-06-09 23:18 ` Vincent Mailhol
2022-06-09 20:47 ` [PATCH v2 3/3] can: gs_usb: fix DMA memory leak on close Rhett Aultman
2022-06-10 0:05 ` Vincent Mailhol
2022-06-10 1:28 ` Vincent Mailhol
2022-06-10 21:33 ` [PATCH v3 0/2] URB_FREE_COHERENT gs_usb memory leak fix Rhett Aultman
2022-06-10 21:33 ` [PATCH v3 1/2] drivers: usb/core/urb: Add URB_FREE_COHERENT Rhett Aultman
2022-06-11 15:31 ` Marc Kleine-Budde
2022-06-11 16:06 ` Vincent MAILHOL
2022-06-21 13:51 ` Greg Kroah-Hartman [this message]
2022-06-21 14:59 ` Vincent MAILHOL
2022-06-21 15:03 ` Greg Kroah-Hartman
2022-06-21 15:54 ` Vincent MAILHOL
2022-06-21 15:11 ` Alan Stern
2022-06-21 15:55 ` Vincent MAILHOL
2022-06-21 16:14 ` Alan Stern
2022-06-21 16:40 ` Vincent MAILHOL
2022-06-21 17:00 ` Greg Kroah-Hartman
2022-06-21 17:14 ` Vincent MAILHOL
2022-06-21 17:46 ` Greg Kroah-Hartman
2022-06-22 9:22 ` David Laight
2022-06-22 9:41 ` Greg Kroah-Hartman
2022-06-22 10:03 ` David Laight
2022-06-22 11:11 ` Oliver Neukum
2022-06-22 10:34 ` Vincent MAILHOL
2022-06-22 12:23 ` Greg Kroah-Hartman
2022-06-22 15:59 ` Vincent MAILHOL
2022-06-22 18:11 ` Rhett Aultman
2022-06-26 8:21 ` Vincent MAILHOL
2022-06-23 17:30 ` Hongren Zenithal Zheng
2022-06-23 17:45 ` Shuah Khan
2022-06-24 14:43 ` Alan Stern
2022-06-24 16:01 ` Hongren Zenithal Zheng
2022-06-24 16:31 ` Shuah Khan
2022-06-24 18:07 ` Alan Stern
2022-06-27 22:54 ` Shuah Khan
2022-06-28 1:35 ` Alan Stern
2022-07-01 2:10 ` Shuah Khan
2022-08-01 17:42 ` Shuah Khan
2022-08-01 18:28 ` Vincent MAILHOL
2022-08-03 23:44 ` Shuah Khan
2022-06-10 21:33 ` [PATCH v3 2/2] can: gs_usb: fix DMA memory leak on close Rhett Aultman
2022-06-11 15:35 ` Marc Kleine-Budde
2022-06-11 16:03 ` Vincent MAILHOL
2022-06-12 21:28 ` David Laight
2022-06-12 21:33 ` Marc Kleine-Budde
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=YrHM8mqG3WVVesk4@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mailhol.vincent@wanadoo.fr \
--cc=mkl@pengutronix.de \
--cc=oneukum@suse.com \
--cc=rhett.aultman@samsara.com \
--cc=stern@rowland.harvard.edu \
/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