It is done in usbdev_mmap(); it calls usbfs_increase_memory_usage() to account for the buffer it allocates. No additional memory (other than for the control structures) is needed when actually submitting the URB. On Thu, Aug 15, 2019 at 5:53 AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > On Wed, Aug 14, 2019 at 02:29:24PM -0700, gavinli@xxxxxxxxxxxxxx wrote: > > From: Gavin Li <git@xxxxxxxxxxxxxx> > > > > Memory usage for USB memory allocated via mmap() is already accounted > > for at mmap() time; no need to account for it again at submiturb time. > > > > Signed-off-by: Gavin Li <git@xxxxxxxxxxxxxx> > > --- > > drivers/usb/core/devio.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > What commit does this fix? What issue does this fix, is it something > that is user-visable? > > > > > diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c > > index bbe9c2edd3e7..9681dd55473b 100644 > > --- a/drivers/usb/core/devio.c > > +++ b/drivers/usb/core/devio.c > > @@ -1603,7 +1603,8 @@ static int proc_do_submiturb(struct usb_dev_state *ps, struct usbdevfs_urb *uurb > > if (as->usbm) > > num_sgs = 0; > > > > - u += sizeof(struct async) + sizeof(struct urb) + uurb->buffer_length + > > + u += sizeof(struct async) + sizeof(struct urb) + > > + (as->usbm ? 0 : uurb->buffer_length) + > > num_sgs * sizeof(struct scatterlist); > > Are you sure? Where is the buffer_length being added to the size here? > What am I missing? > > thanks, > > greg k-h