From: Felipe Balbi <balbi@kernel.org>
To: Jim Lin <jilin@nvidia.com>
Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] usb: gadget: f_fs: Fix kernel panic for SuperSpeed
Date: Fri, 06 May 2016 09:44:25 +0300 [thread overview]
Message-ID: <87mvo3it2u.fsf@intel.com> (raw)
In-Reply-To: <572B2208.7010804@nvidia.com>
[-- Attachment #1: Type: text/plain, Size: 3577 bytes --]
Hi Jim,
Jim Lin <jilin@nvidia.com> writes:
> On 2016年05月04日 18:37, Felipe Balbi wrote:
>> * PGP Signed by an unknown key
>>
>>
>> Hi,
>>
>> Jim Lin <jilin@nvidia.com> writes:
>>
>> <snip>
>>
>>>>> In f_fs.c
>>>>> "
>>>>> static int __ffs_data_do_os_desc(enum ffs_os_desc_type type,
>>>>> struct usb_os_desc_header *h, void *data,
>>>>> unsigned len, void *priv)
>>>>> {
>>>>> struct ffs_data *ffs = priv;
>>>>> u8 length;
>>>>>
>>>>> ENTER();
>>>>>
>>>>> switch (type) {
>>>>> case FFS_OS_DESC_EXT_COMPAT: {
>>>>> struct usb_ext_compat_desc *d = data;
>>>>> int i;
>>>>>
>>>>> if (len < sizeof(*d) ||
>>>>> d->bFirstInterfaceNumber >= ffs->interfaces_count ||
>>>>> d->Reserved1)
>>>>> return -EINVAL;
>>>>> "
>>>> that's fine, but this is only failing because something else is
>>>> returning the wrong set of descriptors (SS vs HS). That's the bug we
>>>> want to fix, not work around it.
>>>>
>>> Thanks.
>> you're welcome, but to fix that bug we need more information. Why is
>> composite.c using the wrong set of descriptors ? What is your setup ?
>>
>> Are you using an in-kernel gadget ? which one ?
> No, our gadget driver is on the way to submit.
>> Using configfs or legacy
>> gadgets ? gadgetfs ? f_fs ?
>
>> How to trigger this ? Can you provide
>> instructions and (in case of gadgetfs/ffs) code to create a gadget that
>> hits this problem ?
>>
> Please refer to
> https://android.googlesource.com/platform/system/core/+/master/adb/usb_linux_client.cpp
according to this, there is a set of SuperSpeed descriptors starting on
linux 169:
https://android.googlesource.com/platform/system/core/+/master/adb/usb_linux_client.cpp#169
I don't get what the problem is. You mentioned something about SS vs HS
descriptors at some point, but that shouldn't be a problem seen that ADB
provides SS descriptors.
> Also this is a thought coming from another engineer for your reference.
> "
>
> I think Microsoft and linux are contradicting the requirements.
> According MSFT's os descriptor definition, one of the reserved fields
> needs to be set to 1 whereas seems like f_fs.c expects them to be 0.
> (copy pasting from the spec downloaded from:
> https://msdn.microsoft.com/en-us/library/windows/hardware/gg463179.aspx)
I see..
> What does upstream think ? Requires some conflict resolution I guess !!
> Since the OS descriptors are from MSFT, I believe upstream has to drop
> the check and I think this patch might be valid..
If we difer from the spec, we need to remain compliant. I can see adb
sets this to a 1 as the spec requires:
https://android.googlesource.com/platform/system/core/+/master/adb/usb_linux_client.cpp#206
Now I understand the problem, it's not related to SS vs HS, it's just us
using the wrong check for Reserved1. Here's one thing though, the patch
isn't exactly correct. Instead of removing the check completely, we
*must* force the correct check. IOW:
if (len < sizeof(*d) ||
d->bFirstInterfaceNumber >= ffs->interfaces_count ||
- d->Reserved1)
+ !d->Reserved1)
Heh, now your commit log makes more sense as well, but it could use some
rewording. It appears, from that commit, that the problem is writing
without SS descriptors, which it isn't. The real problem is the wrong
check of the Reserved1 field in MSFT OS Descriptor.
cheers
--
balbi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]
next prev parent reply other threads:[~2016-05-06 6:46 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-22 10:43 [PATCH] usb: gadget: f_fs: Fix kernel panic for SuperSpeed Jim Lin
2016-04-22 11:21 ` Lars-Peter Clausen
2016-04-22 11:52 ` Felipe Balbi
2016-04-25 11:32 ` Jim Lin
2016-04-25 12:01 ` Felipe Balbi
2016-04-26 8:49 ` Jim Lin
2016-04-28 11:16 ` Jim Lin
2016-04-28 12:21 ` Felipe Balbi
2016-04-29 11:27 ` Jim Lin
2016-04-29 11:57 ` Felipe Balbi
2016-05-04 8:07 ` Jim Lin
2016-05-04 10:37 ` Felipe Balbi
2016-05-05 10:35 ` Jim Lin
2016-05-06 6:44 ` Felipe Balbi [this message]
2016-05-06 2:37 ` Jim Lin
2016-04-29 15:28 ` Mathias Nyman
2016-05-02 6:23 ` Felipe Balbi
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=87mvo3it2u.fsf@intel.com \
--to=balbi@kernel.org \
--cc=jilin@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.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 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.