lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.44L0.1707251000470.2256-100000@iolanthe.rowland.org>
Date:   Tue, 25 Jul 2017 10:05:03 -0400 (EDT)
From:   Alan Stern <stern@...land.harvard.edu>
To:     "Rafael J. Wysocki" <rjw@...ysocki.net>
cc:     Linux USB <linux-usb@...r.kernel.org>,
        Linux PM <linux-pm@...r.kernel.org>,
        LKML <linux-kernel@...r.kernel.org>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        Mathias Nyman <mathias.nyman@...ux.intel.com>,
        Felipe Balbi <balbi@...nel.org>
Subject: Re: [PATCH] PM / USB: hcd_pci: Skip secondary root hub check for
 HCD_DEAD()

On Tue, 25 Jul 2017, Rafael J. Wysocki wrote:

> From: Rafael J. Wysocki <rafael.j.wysocki@...el.com>
> 
> If HCD_DEAD(hcd) is "true" in check_root_hub_suspended(), it is
> rather pointless to check the secondary root hub, so return early
> then.
> 
> This actually fixes occasional suspend failures on one of my test
> machines.
> 
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@...el.com>
> ---
>  drivers/usb/core/hcd-pci.c |    3 +++
>  1 file changed, 3 insertions(+)
> 
> Index: linux-pm/drivers/usb/core/hcd-pci.c
> ===================================================================
> --- linux-pm.orig/drivers/usb/core/hcd-pci.c
> +++ linux-pm/drivers/usb/core/hcd-pci.c
> @@ -427,6 +427,9 @@ static int check_root_hub_suspended(stru
>  		dev_warn(dev, "Root hub is not suspended\n");
>  		return -EBUSY;
>  	}
> +	if (HCD_DEAD(hcd))
> +		return 0;
> +
>  	if (hcd->shared_hcd) {
>  		hcd = hcd->shared_hcd;
>  		if (HCD_RH_RUNNING(hcd)) {

While this is an okay solution, IMO it would be more reliable and more 
general to have usb_hc_died() clear the HCD_FLAG_RH_RUNNING bit and set 
the HCD_FLAG_DEAD bit in the shared hcd.  Right now it only does these 
things for the primary.

Would you like to write and test a patch to do that?

Incidentally, if this fixes occasional suspend failures on your test 
machine, does that mean the test machine's host controller occasionally 
dies?  Maybe that should be fixed too...

Alan Stern

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ