Merge branch 'linux-4.7' of git://github.com/skeggsb/linux into drm-fixes
[deliverable/linux.git] / kernel / locking / rwsem.c
index c817216c161521b92cc64ef90e1da1c54e936839..2e853ad93a3a0f27ac3ce676ebe637ad8e03199e 100644 (file)
@@ -173,6 +173,22 @@ void down_write_nested(struct rw_semaphore *sem, int subclass)
 
 EXPORT_SYMBOL(down_write_nested);
 
+int __sched down_write_killable_nested(struct rw_semaphore *sem, int subclass)
+{
+       might_sleep();
+       rwsem_acquire(&sem->dep_map, subclass, 0, _RET_IP_);
+
+       if (LOCK_CONTENDED_RETURN(sem, __down_write_trylock, __down_write_killable)) {
+               rwsem_release(&sem->dep_map, 1, _RET_IP_);
+               return -EINTR;
+       }
+
+       rwsem_set_owner(sem);
+       return 0;
+}
+
+EXPORT_SYMBOL(down_write_killable_nested);
+
 void up_read_non_owner(struct rw_semaphore *sem)
 {
        __up_read(sem);
This page took 0.025688 seconds and 5 git commands to generate.