UPSTREAM: binder: fix proc->files use-after-free
authorTodd Kjos <tkjos@android.com>
Mon, 27 Nov 2017 17:32:33 +0000 (09:32 -0800)
committerMartijn Coenen <maco@android.com>
Tue, 17 Jul 2018 09:14:22 +0000 (11:14 +0200)
commitfbb4339c024d65c9eadbfc664d82bf8c5307ac18
tree72a46d20a9d10c1f9660f8f63c4fba657c19265d
parent6f7e5f90350e92f056bb092c067c83b18a81136e
UPSTREAM: binder: fix proc->files use-after-free

proc->files cleanup is initiated by binder_vma_close. Therefore
a reference on the binder_proc is not enough to prevent the
files_struct from being released while the binder_proc still has
a reference. This can lead to an attempt to dereference the
stale pointer obtained from proc->files prior to proc->files
cleanup. This has been seen once in task_get_unused_fd_flags()
when __alloc_fd() is called with a stale "files".

The fix is to protect proc->files with a mutex to prevent cleanup
while in use.

Signed-off-by: Todd Kjos <tkjos@google.com>
Cc: stable <stable@vger.kernel.org> # 4.14
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 7f3dc0088b98533f17128058fac73cd8b2752ef1)

Change-Id: I40982bb0b4615bda5459538c20eb2a913964042c
drivers/android/binder.c