From: Lu Baolu <baolu.lu@linux.intel.com>
To: Felipe Balbi <felipe.balbi@linux.intel.com>,
Mathias Nyman <mathias.nyman@linux.intel.com>
Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
zhengjun.xing@linux.intel.com
Subject: Re: [PATCH v2 5/5] usb: xhci: Handle USB transaction error on address command
Date: Thu, 27 Jul 2017 16:56:05 +0800 [thread overview]
Message-ID: <5979AAA5.5090601@linux.intel.com> (raw)
In-Reply-To: <87vame2u0i.fsf@linux.intel.com>
Hi,
On 07/27/2017 03:55 PM, Felipe Balbi wrote:
> Hi,
>
> Lu Baolu <baolu.lu@linux.intel.com> writes:
>> Xhci driver handles USB transaction errors on transfer events,
>> but transaction errors are possible on address device command
>> completion events as well.
>>
>> The xHCI specification (section 4.6.5) says: A USB Transaction
>> Error Completion Code for an Address Device Command may be due
>> to a Stall response from a device. Software should issue a Disable
>> Slot Command for the Device Slot then an Enable Slot Command to
>> recover from this error.
>>
>> This patch handles USB transaction errors on address command
>> completion events. The related discussion threads can be found
>> through below links.
>>
>> http://marc.info/?l=linux-usb&m=149362010728921&w=2
>> http://marc.info/?l=linux-usb&m=149252752825755&w=2
>>
>> Suggested-by: Mathias Nyman <mathias.nyman@linux.intel.com>
>> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
>> ---
>> drivers/usb/host/xhci.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
>> index d6b728d..95780f8 100644
>> --- a/drivers/usb/host/xhci.c
>> +++ b/drivers/usb/host/xhci.c
>> @@ -3822,6 +3822,11 @@ static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev,
>> break;
>> case COMP_USB_TRANSACTION_ERROR:
>> dev_warn(&udev->dev, "Device not responding to setup %s.\n", act);
>> +
>> + ret = xhci_disable_slot(xhci, udev->slot_id);
>> + if (!ret)
>> + xhci_alloc_dev(hcd, udev);
> aren't you leaking previously allocated virt_dev ?
>
When disable slot command completes, the command completion handler
will release the previous allocated virt_dev.
Best regards,
Lu Baolu
prev parent reply other threads:[~2017-07-27 8:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-27 2:21 [PATCH v2 0/5] usb: xhci: Handle USB transaction error on address command Lu Baolu
2017-07-27 2:21 ` [PATCH v2 1/5] usb: xhci: Disable slot even virt-dev is null Lu Baolu
2017-08-09 7:58 ` Mathias Nyman
2017-08-10 0:35 ` Lu Baolu
2017-08-10 10:00 ` Mathias Nyman
2017-08-11 1:18 ` Lu Baolu
2017-07-27 2:21 ` [PATCH v2 2/5] usb: xhci: Fix potential memory leak in xhci_disable_slot() Lu Baolu
2017-08-09 10:09 ` Mathias Nyman
2017-07-27 2:21 ` [PATCH v2 3/5] usb: xhci: Fix memory leak when xhci_disable_slot() returns error Lu Baolu
2017-07-27 2:21 ` [PATCH v2 4/5] usb: xhci: Return error when host is dead in xhci_disable_slot() Lu Baolu
2017-07-27 2:21 ` [PATCH v2 5/5] usb: xhci: Handle USB transaction error on address command Lu Baolu
2017-07-27 7:55 ` Felipe Balbi
2017-07-27 8:56 ` Lu Baolu [this message]
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=5979AAA5.5090601@linux.intel.com \
--to=baolu.lu@linux.intel.com \
--cc=felipe.balbi@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@linux.intel.com \
--cc=zhengjun.xing@linux.intel.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.