kcsan: Fix debugfs initcall return type
[linux-2.6-microblaze.git] / kernel / kcmp.c
index 36e58eb..5353edf 100644 (file)
@@ -70,25 +70,25 @@ get_file_raw_ptr(struct task_struct *task, unsigned int idx)
        return file;
 }
 
-static void kcmp_unlock(struct mutex *m1, struct mutex *m2)
+static void kcmp_unlock(struct rw_semaphore *l1, struct rw_semaphore *l2)
 {
-       if (likely(m2 != m1))
-               mutex_unlock(m2);
-       mutex_unlock(m1);
+       if (likely(l2 != l1))
+               up_read(l2);
+       up_read(l1);
 }
 
-static int kcmp_lock(struct mutex *m1, struct mutex *m2)
+static int kcmp_lock(struct rw_semaphore *l1, struct rw_semaphore *l2)
 {
        int err;
 
-       if (m2 > m1)
-               swap(m1, m2);
+       if (l2 > l1)
+               swap(l1, l2);
 
-       err = mutex_lock_killable(m1);
-       if (!err && likely(m1 != m2)) {
-               err = mutex_lock_killable_nested(m2, SINGLE_DEPTH_NESTING);
+       err = down_read_killable(l1);
+       if (!err && likely(l1 != l2)) {
+               err = down_read_killable_nested(l2, SINGLE_DEPTH_NESTING);
                if (err)
-                       mutex_unlock(m1);
+                       up_read(l1);
        }
 
        return err;
@@ -156,8 +156,8 @@ SYSCALL_DEFINE5(kcmp, pid_t, pid1, pid_t, pid2, int, type,
        /*
         * One should have enough rights to inspect task details.
         */
-       ret = kcmp_lock(&task1->signal->exec_update_mutex,
-                       &task2->signal->exec_update_mutex);
+       ret = kcmp_lock(&task1->signal->exec_update_lock,
+                       &task2->signal->exec_update_lock);
        if (ret)
                goto err;
        if (!ptrace_may_access(task1, PTRACE_MODE_READ_REALCREDS) ||
@@ -212,8 +212,8 @@ SYSCALL_DEFINE5(kcmp, pid_t, pid1, pid_t, pid2, int, type,
        }
 
 err_unlock:
-       kcmp_unlock(&task1->signal->exec_update_mutex,
-                   &task2->signal->exec_update_mutex);
+       kcmp_unlock(&task1->signal->exec_update_lock,
+                   &task2->signal->exec_update_lock);
 err:
        put_task_struct(task1);
        put_task_struct(task2);