All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jim Lin <jilin@nvidia.com>
To: Felipe Balbi <balbi@kernel.org>
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, 29 Apr 2016 19:27:30 +0800	[thread overview]
Message-ID: <57234522.9000607@nvidia.com> (raw)
In-Reply-To: <871t5plya5.fsf@intel.com>

On 2016年04月28日 20:21, Felipe Balbi wrote:
>>
>> I also attach git log of system/core/adb/usb_linux_client.cpp of Android
>> N for your reference.
>> "
>> Author: Badhri Jagan Sridharan <Badhri@google.com>
>> Date:   Mon Oct 5 13:04:03 2015 -0700
>>
>>       adbd: Add os descriptor support for adb.
>>
>>       Eventhough windows does not rely on extended os
>>       descriptor for adbd, when android usb device is
>>       configures as a composite device such as mtp+adb,
>>       windows discards the extended os descriptor even
>>       if one of the USB function fails to send
>>       the extended compat descriptor. This results in automatic
>>       install of MTP driverto fail when Android device is in
>>       "File Transfer" mode with adb enabled.
>>
>> https://msdn.microsoft.com/en-us/library/windows/hardware/gg463179.aspx
>> "
> Okay, cool. Can you check that you're limitting your controller's speed
> to high-speed ?
>
Let's focus on original patch.
Could you help to explain why we need below d->Reserved1 checking?
Now the question is that

https://msdn.microsoft.com/en-us/library/windows/hardware/gg463179.aspx

Page 7 of OS_Desc_CompatID.doc
defines reserved field to be 1 and
below code will think that os_desc is invalid because d->Reserved1 is 1.


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;
"

--nvpublic

  reply	other threads:[~2016-04-29 11:28 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 [this message]
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
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=57234522.9000607@nvidia.com \
    --to=jilin@nvidia.com \
    --cc=balbi@kernel.org \
    --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.