OSDN Git Service

binder: add missing binder_unlock()
authorEric Biggers <ebiggers@google.com>
Mon, 26 Feb 2018 18:56:45 +0000 (10:56 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 28 Feb 2018 09:18:33 +0000 (10:18 +0100)
When commit 4be5a2810489 ("binder: check for binder_thread allocation
failure in binder_poll()") was applied to 4.4-stable and 4.9-stable it
was forgotten to release the global binder lock in the new error path.
The global binder lock wasn't removed until v4.14, by commit
a60b890f607d ("binder: remove global binder lock").

Fix the new error path to release the lock.

Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/android/binder.c

index 3b6ac80..49199bd 100644 (file)
@@ -2628,8 +2628,10 @@ static unsigned int binder_poll(struct file *filp,
        binder_lock(__func__);
 
        thread = binder_get_thread(proc);
-       if (!thread)
+       if (!thread) {
+               binder_unlock(__func__);
                return POLLERR;
+       }
 
        wait_for_proc_work = thread->transaction_stack == NULL &&
                list_empty(&thread->todo) && thread->return_error == BR_OK;