mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
locking, rwsem: Annotate inner lock as raw
There is no reason to allow the lock protecting rwsems (the ownerless variant) to be preemptible on -rt. Convert it to raw. In mainline this change documents the low level nature of the lock - otherwise there's no functional difference. Lockdep and Sparse checking will work as usual. Signed-off-by: Thomas Gleixner <[email protected]> Signed-off-by: Ingo Molnar <[email protected]>
This commit is contained in:
parent
8292c9e15c
commit
ddb6c9b58a
4 changed files with 33 additions and 31 deletions
14
lib/rwsem.c
14
lib/rwsem.c
|
|
@ -22,7 +22,7 @@ void __init_rwsem(struct rw_semaphore *sem, const char *name,
|
|||
lockdep_init_map(&sem->dep_map, name, key, 0);
|
||||
#endif
|
||||
sem->count = RWSEM_UNLOCKED_VALUE;
|
||||
spin_lock_init(&sem->wait_lock);
|
||||
raw_spin_lock_init(&sem->wait_lock);
|
||||
INIT_LIST_HEAD(&sem->wait_list);
|
||||
}
|
||||
|
||||
|
|
@ -180,7 +180,7 @@ rwsem_down_failed_common(struct rw_semaphore *sem,
|
|||
set_task_state(tsk, TASK_UNINTERRUPTIBLE);
|
||||
|
||||
/* set up my own style of waitqueue */
|
||||
spin_lock_irq(&sem->wait_lock);
|
||||
raw_spin_lock_irq(&sem->wait_lock);
|
||||
waiter.task = tsk;
|
||||
waiter.flags = flags;
|
||||
get_task_struct(tsk);
|
||||
|
|
@ -204,7 +204,7 @@ rwsem_down_failed_common(struct rw_semaphore *sem,
|
|||
adjustment == -RWSEM_ACTIVE_WRITE_BIAS)
|
||||
sem = __rwsem_do_wake(sem, RWSEM_WAKE_READ_OWNED);
|
||||
|
||||
spin_unlock_irq(&sem->wait_lock);
|
||||
raw_spin_unlock_irq(&sem->wait_lock);
|
||||
|
||||
/* wait to be given the lock */
|
||||
for (;;) {
|
||||
|
|
@ -245,13 +245,13 @@ struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem)
|
|||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&sem->wait_lock, flags);
|
||||
raw_spin_lock_irqsave(&sem->wait_lock, flags);
|
||||
|
||||
/* do nothing if list empty */
|
||||
if (!list_empty(&sem->wait_list))
|
||||
sem = __rwsem_do_wake(sem, RWSEM_WAKE_ANY);
|
||||
|
||||
spin_unlock_irqrestore(&sem->wait_lock, flags);
|
||||
raw_spin_unlock_irqrestore(&sem->wait_lock, flags);
|
||||
|
||||
return sem;
|
||||
}
|
||||
|
|
@ -265,13 +265,13 @@ struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem)
|
|||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&sem->wait_lock, flags);
|
||||
raw_spin_lock_irqsave(&sem->wait_lock, flags);
|
||||
|
||||
/* do nothing if list empty */
|
||||
if (!list_empty(&sem->wait_list))
|
||||
sem = __rwsem_do_wake(sem, RWSEM_WAKE_READ_OWNED);
|
||||
|
||||
spin_unlock_irqrestore(&sem->wait_lock, flags);
|
||||
raw_spin_unlock_irqrestore(&sem->wait_lock, flags);
|
||||
|
||||
return sem;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue