From: Bartlomiej Zolnierkiewicz Date: Tue, 25 Mar 2014 18:51:38 +0000 (+0100) Subject: ata: ahci_platform: fix ahci_platform_data->suspend method handling X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=dacfdeff48ac4ca992fbb539ad8070cafcbce652;p=karo-tx-linux.git ata: ahci_platform: fix ahci_platform_data->suspend method handling Looking at ST SPEAr1340 AHCI code (the only user of the deprecated pdata->suspend and pdata->resume) it is obvious the we should return after calling pdata->suspend() only if the function have returned non-zero return value. The code has been broken since commit 1e70c2 ("ata/ahci_platform: Add clock framework support"). Fix it. Cc: Viresh Kumar Cc: Shiraz Hashim Acked-by: Hans de Goede Signed-off-by: Bartlomiej Zolnierkiewicz Signed-off-by: Tejun Heo (cherry picked from commit 83b03fd67b9b3fa3795871169f3c08c35b3d6ea8) --- diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c index 0ce3f1105528..e50bb969a216 100644 --- a/drivers/ata/ahci_platform.c +++ b/drivers/ata/ahci_platform.c @@ -522,12 +522,19 @@ int ahci_platform_suspend(struct device *dev) if (rc) return rc; - if (pdata && pdata->suspend) - return pdata->suspend(dev); + if (pdata && pdata->suspend) { + rc = pdata->suspend(dev); + if (rc) + goto resume_host; + } ahci_platform_disable_resources(hpriv); return 0; + +resume_host: + ahci_platform_resume_host(dev); + return rc; } EXPORT_SYMBOL_GPL(ahci_platform_suspend);