From b5670f28bb580e904b4e36263a668c1fe6315ece Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Tue, 22 May 2007 11:38:19 -0400 Subject: [PATCH] --- yaml --- r: 56844 b: refs/heads/master c: dd865571d7af06ba1285c2db85083649193cceab h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/core/sysfs.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b6859632fd9a..2043c36da96a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7ed92f1a149dddc3cb537ccd7441e98adac12c3e +refs/heads/master: dd865571d7af06ba1285c2db85083649193cceab diff --git a/trunk/drivers/usb/core/sysfs.c b/trunk/drivers/usb/core/sysfs.c index e7c982377488..be37c863fdfb 100644 --- a/trunk/drivers/usb/core/sysfs.c +++ b/trunk/drivers/usb/core/sysfs.c @@ -232,12 +232,15 @@ set_level(struct device *dev, struct device_attribute *attr, int len = count; char *cp; int rc = 0; + int old_autosuspend_disabled, old_autoresume_disabled; cp = memchr(buf, '\n', count); if (cp) len = cp - buf; usb_lock_device(udev); + old_autosuspend_disabled = udev->autosuspend_disabled; + old_autoresume_disabled = udev->autoresume_disabled; /* Setting the flags without calling usb_pm_lock is a subject to * races, but who cares... @@ -263,6 +266,10 @@ set_level(struct device *dev, struct device_attribute *attr, } else rc = -EINVAL; + if (rc) { + udev->autosuspend_disabled = old_autosuspend_disabled; + udev->autoresume_disabled = old_autoresume_disabled; + } usb_unlock_device(udev); return (rc < 0 ? rc : count); }