diff options
author | Shinya Kuribayashi | 2012-07-07 12:37:42 +0200 |
---|---|---|
committer | Ohad Ben-Cohen | 2012-07-07 21:35:30 +0200 |
commit | 476a7eeb60e70ddab138e7cb4bc44ef5ac20782e (patch) | |
tree | 294b3ca8b3a9e7eb043ff8fda4675c0479a52670 /drivers | |
parent | Linux 3.5-rc5 (diff) | |
download | kernel-qcow2-linux-476a7eeb60e70ddab138e7cb4bc44ef5ac20782e.tar.gz kernel-qcow2-linux-476a7eeb60e70ddab138e7cb4bc44ef5ac20782e.tar.xz kernel-qcow2-linux-476a7eeb60e70ddab138e7cb4bc44ef5ac20782e.zip |
hwspinlock/core: use global ID to register hwspinlocks on multiple devices
Commit 300bab9770 (hwspinlock/core: register a bank of hwspinlocks in a
single API call, 2011-09-06) introduced 'hwspin_lock_register_single()'
to register numerous (a bank of) hwspinlock instances in a single API,
'hwspin_lock_register()'.
At which time, 'hwspin_lock_register()' accidentally passes 'local IDs'
to 'hwspin_lock_register_single()', despite that ..._single() requires
'global IDs' to register hwspinlocks.
We have to convert into global IDs by supplying the missing 'base_id'.
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Shinya Kuribayashi <shinya.kuribayashi.px@renesas.com>
[ohad: fix error path of hwspin_lock_register, too]
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/hwspinlock/hwspinlock_core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c index 61c9cf15fa52..1201a15784c3 100644 --- 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; - ret = hwspin_lock_register_single(hwlock, i); + ret = hwspin_lock_register_single(hwlock, base_id + i); 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) - hwspin_lock_unregister_single(i); + hwspin_lock_unregister_single(base_id + i); return ret; } EXPORT_SYMBOL_GPL(hwspin_lock_register); |