From: David Cohen <david.a.cohen@linux.intel.com>
To: balbi@ti.com
Cc: gregkh@linuxfoundation.org, stern@rowland.harvard.edu,
mina86@mina86.com, linux-usb@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 5/5] usb: dwc3: implement gadget's quirk ep_out_align_size
Date: Mon, 02 Dec 2013 10:31:34 -0800 [thread overview]
Message-ID: <529CD206.5080605@linux.intel.com> (raw)
In-Reply-To: <20131125210614.GP18046@saruman.home>
[-- Attachment #1: Type: text/plain, Size: 1628 bytes --]
On 11/25/2013 01:06 PM, Felipe Balbi wrote:
> Hi,
>
> On Tue, Nov 12, 2013 at 01:04:46PM -0800, David Cohen wrote:
>> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
>> index 5452c0fce360..7c2d36f6ad4b 100644
>> --- a/drivers/usb/dwc3/gadget.c
>> +++ b/drivers/usb/dwc3/gadget.c
>> @@ -1130,6 +1130,14 @@ static int dwc3_gadget_ep_queue(struct usb_ep *ep, struct usb_request *request,
>> dev_vdbg(dwc->dev, "queing request %p to %s length %d\n",
>> request, ep->name, request->length);
>>
>> + /* If ep out, roundup request->length to epout maxpacketsize */
>> + if (!(dep->number & 1)) {
>
> we have a direction field in the dep structure, please use that.
>
>> + unsigned int aligned = roundup(request->length,
>> + ep->desc->wMaxPacketSize);
>> + req->pad = aligned - request->length;
>> + request->length = aligned;
>
> this is quite dangerous. You really don't know the size that gadget
> driver allocated. What if we're using SLOB and gadget driver allocated
> exactly 31 bytes (think MSC's CBW) ? Then you change request->length to
> 512-bytes (or 1024 if USB SS), and host happens to be buggy (or
> exploited somehow) and sends more than 31-bytes ? You told dwc3 you
> could receive more than 31-bytes even though you don't know what follows
> your 31-byte buffer.
>
> This is why I have been saying that gadget driver *must* be the one
> hadnling this issue based on the quirk flag.
Thanks. I've seen different point of views in this thread. Since you're
the maintainer, I'll resend the patch following your directions.
Br, David
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 897 bytes --]
next prev parent reply other threads:[~2013-12-02 18:27 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-12 21:04 [PATCH v6 0/5] add gadget quirk to adapt f_fs for DWC3 David Cohen
2013-11-12 21:04 ` [PATCH v6 1/5] usb: gadget: move bitflags to the end of usb_gadget struct David Cohen
2013-11-12 21:04 ` [PATCH v6 2/5] usb: gadget: add quirk_ep_out_aligned_size field to struct usb_gadget David Cohen
2013-11-12 21:04 ` [PATCH v6 3/5] usb: gadget: f_fs: remove loop from I/O function David Cohen
2013-11-12 21:04 ` [PATCH v6 4/5] check quirk to pad epout buf size when not aligned to maxpacketsize David Cohen
2013-11-12 21:04 ` [PATCH v6 5/5] usb: dwc3: implement gadget's quirk ep_out_align_size David Cohen
2013-11-25 21:06 ` Felipe Balbi
2013-12-02 18:31 ` David Cohen [this message]
2013-12-03 22:16 ` David Cohen
2013-11-12 21:05 ` [PATCH v6 0/5] add gadget quirk to adapt f_fs for DWC3 David Cohen
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=529CD206.5080605@linux.intel.com \
--to=david.a.cohen@linux.intel.com \
--cc=balbi@ti.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mina86@mina86.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