On 2013年01月04日 23:57, Alan Stern wrote:
> On Fri, 4 Jan 2013, Lan Tianyu wrote:
>> @@ -2862,6 +2880,20 @@ int usb_port_suspend(struct usb_device *udev, 
>> pm_message_t msg)
>>              udev->port_is_suspended = 1;
>>              msleep(10);
>>      }
>> +
>> +    /*
>> +     * Check whether current status is meeting requirement of
>> +     * usb port power off mechanism
>> +     */
>> +    if (!udev->do_remote_wakeup
>> +                    && (dev_pm_qos_flags(&port_dev->dev,
>> +                    PM_QOS_FLAG_NO_POWER_OFF) != PM_QOS_FLAGS_ALL)
>> +                    && udev->persist_enabled
>> +                    && !status) {
>> +            pm_runtime_put_sync(&port_dev->dev);
>> +            port_dev->did_runtime_put = true;
> 
> You forgot to check port_dev->did_runtime_put in usb_disconnect.  
> Unless you check it, you could end up calling pm_runtime_put a second 
> time.
Thanks for your reminder. Yeah. If the did_runtime_put is true, the
pm_runtime_put() in the usb_disconnect() is not necessary.



-- 
Best regards
Tianyu Lan
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to