All of lore.kernel.org
 help / color / mirror / Atom feed
From: Felipe Ferreri Tonello <eu@felipetonello.com>
To: Steve Calfee <stevecalfee@gmail.com>
Cc: USB list <linux-usb@vger.kernel.org>,
	Kernel development list <linux-kernel@vger.kernel.org>,
	Felipe Balbi <balbi@kernel.org>,
	Michal Nazarewicz <mina86@mina86.com>,
	Robert Baldyga <r.baldyga@samsung.com>
Subject: Re: [PATCH] usb: gadget: f_midi: Fixed a bug when buflen was smaller than wMaxPacketSize
Date: Thu, 10 Mar 2016 09:23:34 +0000	[thread overview]
Message-ID: <56E13D16.9020301@felipetonello.com> (raw)
In-Reply-To: <CAJJ6jxss_ugwktn+U6O7hEXuW2tCfspR=oz2LOj6fHCrAyN9Vw@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2018 bytes --]

Hi Steve,

On 09/03/16 22:43, Steve Calfee wrote:
> On Wed, Mar 9, 2016 at 11:39 AM, Felipe F. Tonello <eu@felipetonello.com> wrote:
>> buflen by default (256) is smaller than wMaxPacketSize (512) in high-speed
>> devices.
>>
>> That caused the OUT endpoint to freeze if the host send any data packet of
>> length greater than 256 bytes.
>>
>> This is an example dump of what happended on that enpoint:
>> HOST:   [DATA][Length=260][...]
>> DEVICE: [NAK]
>> HOST:   [PING]
>> DEVICE: [NAK]
>> HOST:   [PING]
>> DEVICE: [NAK]
>> ...
>> HOST:   [PING]
>> DEVICE: [NAK]
>>
>> This patch fixes this problem by setting the minimum usb_request's buffer size
>> for the OUT endpoint as its wMaxPacketSize.
>>
>> Signed-off-by: Felipe F. Tonello <eu@felipetonello.com>
>> ---
>>  drivers/usb/gadget/function/f_midi.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
>> index 8475e3dc82d4..826ba641f29d 100644
>> --- a/drivers/usb/gadget/function/f_midi.c
>> +++ b/drivers/usb/gadget/function/f_midi.c
>> @@ -366,7 +366,9 @@ static int f_midi_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
>>         /* allocate a bunch of read buffers and queue them all at once. */
>>         for (i = 0; i < midi->qlen && err == 0; i++) {
>>                 struct usb_request *req =
>> -                       midi_alloc_ep_req(midi->out_ep, midi->buflen);
>> +                       midi_alloc_ep_req(midi->out_ep,
>> +                               max_t(unsigned, midi->buflen,
>> +                                       bulk_out_desc.wMaxPacketSize));
>>                 if (req == NULL)
>>                         return -ENOMEM;
>>
> Won't you get a buffer overrun if midi->buflen is less than wMaxPacketSize?
> 

No, because of the *max_t(unsigned, midi->buflen,
bulk_out_desc.wMaxPacketSize)*.

Maybe that's not the most clear indentation but I had to break it in
order to avoid passing 80 columns.

-- 
Felipe

[-- Attachment #2: 0x92698E6A.asc --]
[-- Type: application/pgp-keys, Size: 7310 bytes --]

  reply	other threads:[~2016-03-10  9:23 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-09 19:39 [PATCH] usb: gadget: f_midi: Fixed a bug when buflen was smaller than wMaxPacketSize Felipe F. Tonello
2016-03-09 22:43 ` Steve Calfee
2016-03-10  9:23   ` Felipe Ferreri Tonello [this message]
2016-03-11  8:44   ` Clemens Ladisch
2016-03-11 23:07 ` Michal Nazarewicz
2016-03-14 16:00   ` Felipe Ferreri Tonello
2016-03-15  9:48     ` Clemens Ladisch
2016-03-30 10:51   ` Felipe Balbi
2016-03-30 12:33     ` Michal Nazarewicz
2016-04-01  9:25       ` Felipe Ferreri Tonello
2016-04-01 10:22         ` Felipe Balbi
2016-04-01 14:52           ` Felipe Ferreri Tonello
2016-04-04 10:46             ` Felipe Balbi
2016-04-04 11:33               ` Felipe Ferreri Tonello

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=56E13D16.9020301@felipetonello.com \
    --to=eu@felipetonello.com \
    --cc=balbi@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mina86@mina86.com \
    --cc=r.baldyga@samsung.com \
    --cc=stevecalfee@gmail.com \
    /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.