summaryrefslogtreecommitdiffstats
path: root/kernel/locking/rwsem.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/locking/rwsem.c')
-rw-r--r--kernel/locking/rwsem.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
index 776308d2fa9e..e586f0d03ad3 100644
--- a/kernel/locking/rwsem.c
+++ b/kernel/locking/rwsem.c
@@ -117,8 +117,9 @@ EXPORT_SYMBOL(down_write_trylock);
117void up_read(struct rw_semaphore *sem) 117void up_read(struct rw_semaphore *sem)
118{ 118{
119 rwsem_release(&sem->dep_map, 1, _RET_IP_); 119 rwsem_release(&sem->dep_map, 1, _RET_IP_);
120 DEBUG_RWSEMS_WARN_ON(sem->owner != RWSEM_READER_OWNED); 120 DEBUG_RWSEMS_WARN_ON(!((unsigned long)sem->owner & RWSEM_READER_OWNED));
121 121
122 rwsem_clear_reader_owned(sem);
122 __up_read(sem); 123 __up_read(sem);
123} 124}
124 125
@@ -181,7 +182,7 @@ void down_read_non_owner(struct rw_semaphore *sem)
181 might_sleep(); 182 might_sleep();
182 183
183 __down_read(sem); 184 __down_read(sem);
184 rwsem_set_reader_owned(sem); 185 __rwsem_set_reader_owned(sem, NULL);
185} 186}
186 187
187EXPORT_SYMBOL(down_read_non_owner); 188EXPORT_SYMBOL(down_read_non_owner);
@@ -215,7 +216,7 @@ EXPORT_SYMBOL(down_write_killable_nested);
215 216
216void up_read_non_owner(struct rw_semaphore *sem) 217void up_read_non_owner(struct rw_semaphore *sem)
217{ 218{
218 DEBUG_RWSEMS_WARN_ON(sem->owner != RWSEM_READER_OWNED); 219 DEBUG_RWSEMS_WARN_ON(!((unsigned long)sem->owner & RWSEM_READER_OWNED));
219 __up_read(sem); 220 __up_read(sem);
220} 221}
221 222