git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dm snapshot: fix hung bios when copy error occurs
[pandora-kernel.git]
/
drivers
/
hwspinlock
/
hwspinlock_core.c
diff --git
a/drivers/hwspinlock/hwspinlock_core.c
b/drivers/hwspinlock/hwspinlock_core.c
index
61c9cf1
..
08e7e72
100644
(file)
--- a/
drivers/hwspinlock/hwspinlock_core.c
+++ b/
drivers/hwspinlock/hwspinlock_core.c
@@
-345,7
+345,7
@@
int hwspin_lock_register(struct hwspinlock_device *bank, struct device *dev,
spin_lock_init(&hwlock->lock);
hwlock->bank = bank;
spin_lock_init(&hwlock->lock);
hwlock->bank = bank;
- ret = hwspin_lock_register_single(hwlock, i);
+ ret = hwspin_lock_register_single(hwlock,
base_id +
i);
if (ret)
goto reg_failed;
}
if (ret)
goto reg_failed;
}
@@
-354,7
+354,7
@@
int hwspin_lock_register(struct hwspinlock_device *bank, struct device *dev,
reg_failed:
while (--i >= 0)
reg_failed:
while (--i >= 0)
- hwspin_lock_unregister_single(i);
+ hwspin_lock_unregister_single(
base_id +
i);
return ret;
}
EXPORT_SYMBOL_GPL(hwspin_lock_register);
return ret;
}
EXPORT_SYMBOL_GPL(hwspin_lock_register);
@@
-416,6
+416,8
@@
static int __hwspin_lock_request(struct hwspinlock *hwlock)
ret = pm_runtime_get_sync(dev);
if (ret < 0) {
dev_err(dev, "%s: can't power on device\n", __func__);
ret = pm_runtime_get_sync(dev);
if (ret < 0) {
dev_err(dev, "%s: can't power on device\n", __func__);
+ pm_runtime_put_noidle(dev);
+ module_put(dev->driver->owner);
return ret;
}
return ret;
}