From 0f3bd2254d10de14c9ae3fdcc7145e33f923c7f2 Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Mon, 21 May 2007 09:55:04 -0400 Subject: [PATCH] --- yaml --- r: 57031 b: refs/heads/master c: 09ff92fea2890c697a36d8b26f5a3ea725ef8fb4 h: refs/heads/master i: 57029: b063f75d6793b0d85273917a34c32b51ff84df5d 57027: 8a50317a29dfd8e5f0402972a46a8a60e6b5d6cc 57023: eb475033c93551965dcd135912ade1e837f14748 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/sd.c | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 5c366c2db5a9..1bcdd72a405e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: cab537d609fb718e9fb09d73e3e3e3062db25743 +refs/heads/master: 09ff92fea2890c697a36d8b26f5a3ea725ef8fb4 diff --git a/trunk/drivers/scsi/sd.c b/trunk/drivers/scsi/sd.c index 00e46662296f..3d8c9cb24f91 100644 --- a/trunk/drivers/scsi/sd.c +++ b/trunk/drivers/scsi/sd.c @@ -1789,7 +1789,7 @@ static void sd_shutdown(struct device *dev) static int sd_suspend(struct device *dev, pm_message_t mesg) { struct scsi_disk *sdkp = scsi_disk_get_from_dev(dev); - int ret; + int ret = 0; if (!sdkp) return 0; /* this can happen */ @@ -1798,30 +1798,34 @@ static int sd_suspend(struct device *dev, pm_message_t mesg) sd_printk(KERN_NOTICE, sdkp, "Synchronizing SCSI cache\n"); ret = sd_sync_cache(sdkp); if (ret) - return ret; + goto done; } if (mesg.event == PM_EVENT_SUSPEND && sdkp->device->manage_start_stop) { sd_printk(KERN_NOTICE, sdkp, "Stopping disk\n"); ret = sd_start_stop_device(sdkp, 0); - if (ret) - return ret; } - return 0; +done: + scsi_disk_put(sdkp); + return ret; } static int sd_resume(struct device *dev) { struct scsi_disk *sdkp = scsi_disk_get_from_dev(dev); + int ret = 0; if (!sdkp->device->manage_start_stop) - return 0; + goto done; sd_printk(KERN_NOTICE, sdkp, "Starting disk\n"); + ret = sd_start_stop_device(sdkp, 1); - return sd_start_stop_device(sdkp, 1); +done: + scsi_disk_put(sdkp); + return ret; } /**