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 <gre...@linuxfoundation.org> wrote:
>
> On Wed, Aug 14, 2019 at 02:29:24PM -0700, gavi...@thegavinli.com wrote:
> > From: Gavin Li <g...@thegavinli.com>
> >
> > 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 <g...@thegavinli.com>
> > ---
> >  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

Reply via email to