mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 14:41:39 +00:00
Staging: mei: fix suspend failure
wait_event_interruptible_timeout return value was wrongly used. The remaining timeout was used as the error code. This fix translated wait_event_interruptible_timeout return value into error code that can be propagated. [10291.674121] pci_pm_suspend(): mei_pci_suspend+0x0/0x8b [mei] returns 2500 It's thinkpad t400 with 00:03.0 Communication controller [0780]: Intel Corporation Mobile 4 Series Chipset MEI Controller [8086:2a44] (rev 07) Reported-by: Arkadiusz Miskiewicz <a.miskiewicz@gmail.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
fdf2df0e8c
commit
a534bb6eea
@ -189,7 +189,7 @@ int mei_hw_init(struct mei_device *dev)
|
||||
mutex_lock(&dev->device_lock);
|
||||
}
|
||||
|
||||
if (!err && !dev->recvd_msg) {
|
||||
if (err <= 0 && !dev->recvd_msg) {
|
||||
dev->mei_state = MEI_DISABLED;
|
||||
dev_dbg(&dev->pdev->dev,
|
||||
"wait_event_interruptible_timeout failed"
|
||||
|
@ -169,10 +169,15 @@ int mei_wd_stop(struct mei_device *dev, bool preserve)
|
||||
ret = wait_event_interruptible_timeout(dev->wait_stop_wd,
|
||||
dev->wd_stopped, 10 * HZ);
|
||||
mutex_lock(&dev->device_lock);
|
||||
if (!dev->wd_stopped)
|
||||
dev_dbg(&dev->pdev->dev, "stop wd failed to complete.\n");
|
||||
else
|
||||
dev_dbg(&dev->pdev->dev, "stop wd complete.\n");
|
||||
if (dev->wd_stopped) {
|
||||
dev_dbg(&dev->pdev->dev, "stop wd complete ret=%d.\n", ret);
|
||||
ret = 0;
|
||||
} else {
|
||||
if (!ret)
|
||||
ret = -ETIMEDOUT;
|
||||
dev_warn(&dev->pdev->dev,
|
||||
"stop wd failed to complete ret=%d.\n", ret);
|
||||
}
|
||||
|
||||
if (preserve)
|
||||
dev->wd_timeout = wd_timeout;
|
||||
|
Loading…
Reference in New Issue
Block a user