From: Alan Stern <stern@rowland.harvard.edu>
To: Shuah Khan <skhan@linuxfoundation.org>
Cc: Hongren Zenithal Zheng <i@zenithal.me>,
Rhett Aultman <rhett.aultman@samsara.com>,
linux-usb@vger.kernel.org, linux-can <linux-can@vger.kernel.org>,
Oliver Neukum <oneukum@suse.com>,
Marc Kleine-Budde <mkl@pengutronix.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Vincent Mailhol <mailhol.vincent@wanadoo.fr>,
Shuah Khan <shuah@kernel.org>
Subject: Re: [PATCH v3 1/2] drivers: usb/core/urb: Add URB_FREE_COHERENT
Date: Fri, 24 Jun 2022 10:43:34 -0400 [thread overview]
Message-ID: <YrXNltWSYbplstPx@rowland.harvard.edu> (raw)
In-Reply-To: <143b863d-c86b-6678-44e6-38799391fa36@linuxfoundation.org>
On Thu, Jun 23, 2022 at 11:45:13AM -0600, Shuah Khan wrote:
> On 6/23/22 11:30 AM, Hongren Zenithal Zheng wrote:
> > On Fri, Jun 10, 2022 at 05:33:35PM -0400, Rhett Aultman wrote:
> > >
> > > 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.
> >
> > > #define URB_FREE_BUFFER 0x0100 /* Free transfer buffer with the URB */
> > > +#define URB_FREE_COHERENT 0x0200 /* Free DMA memory of transfer buffer */
> > > /* The following flags are used internally by usbcore and HCDs */
> > > -#define URB_DIR_IN 0x0200 /* Transfer from device to host */
> > > +#define URB_DIR_IN 0x0400 /* Transfer from device to host */
> > > #define URB_DIR_OUT 0
> > > #define URB_DIR_MASK URB_DIR_IN
> > > --
> > > 2.30.2
> > >
> >
> > I'm afraid this is a change of uapi as this field is, unfortunately,
> > exported by usbip to userspace as TCP packets.
> >
> > This may also cause incompatibility (surprisingly not for this case,
> > detailed below) between usbip server and client
> > when one kernel is using the new flags and the other one is not.
> >
> > If we do change this, we may need to bump usbip protocol version
> > accordingly.
> >
>
>
> > A copy of Alan Stern's suggestion here for reference
> > > I don't see anything wrong with this, except that it would be nice to keep
> > > the flag values in numerical order. In other words, set URB_FREE_COHERENT
> > > to 0x0200 and change URB_DIR_IN to 0x0400.
> > >
> > > Alan Stern
>
> Thank you Alan for this detailed analysis of uapi impacts and
> usbip host side and vhci incompatibilities. Userspace is going
> to be affected. In addition to the usbip tool in the kernel repo,
> there are other versions floating around that would break if we
> were to change the flags.
>
> > One way to solve this issue for usbip
> > is to add some boilerplate transform
> > from URB_* to USBIP_FLAGS_*
> > as it is de facto uapi now.
>
> It doesn't sound like a there is a compelling reason other than
> "it would be nice to keep the flag values in numerical order".
>
> I would not recommend this option. I am not seeing any value to adding
> change URB_* to USBIP_FLAGS_* layer without some serious techinical
> concerns.
>
> >
> > Another way is to use 0x0400 for FREE_COHERENT.
> > usbip will not take care of this bit as
> > it would be masked.
> >
>
> I would go with this option adding a clear comment with link to this
> discussion.
>
> > Cc Shuah Khan here since she is the maintainer
> > on usbip.
> >
>
> Thank you adding me to the discussion.
I can see this causing more problems in the future. There's no hint in
include/linux/usb.h that any of the values it defines are part of a user
API. If they are, they should be moved to include/uapi/linux/usb/.
In general, if a user program depends on kernel details that are not
designed to be part of a user API, you should expect that the program
will sometimes break from one kernel version to another.
Yes, I know Linus insists that kernel changes should not cause
regressions in userspace, but the line has to be drawn somewhere.
Otherwise the kernel could never change at all.
Alan Stern
next prev parent reply other threads:[~2022-06-24 14:45 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
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 [this message]
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=YrXNltWSYbplstPx@rowland.harvard.edu \
--to=stern@rowland.harvard.edu \
--cc=gregkh@linuxfoundation.org \
--cc=i@zenithal.me \
--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=shuah@kernel.org \
--cc=skhan@linuxfoundation.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