android_kernel_oneplus_msm8998/drivers/android
Todd Kjos d3a52e0ec2 binder: fix race between munmap() and direct reclaim
An munmap() on a binder device causes binder_vma_close() to be called
which clears the alloc->vma pointer.

If direct reclaim causes binder_alloc_free_page() to be called, there
is a race where alloc->vma is read into a local vma pointer and then
used later after the mm->mmap_sem is acquired. This can result in
calling zap_page_range() with an invalid vma which manifests as a
use-after-free in zap_page_range().

The fix is to check alloc->vma after acquiring the mmap_sem (which we
were acquiring anyway) and bail out of binder_alloc_free_page() if it
has changed to NULL.

Change-Id: I9ea0558a57635a747d7a48ed35991d39b860abf6
Signed-off-by: Todd Kjos <tkjos@google.com>
(cherry picked from commit 7257eac9401f989a62503b6c12a47af1b10591d1)
2019-03-30 07:59:30 +01:00
..
binder.c UPSTREAM: binder: fix race that allows malicious free of live buffer 2019-03-30 07:59:30 +01:00
binder_alloc.c binder: fix race between munmap() and direct reclaim 2019-03-30 07:59:30 +01:00
binder_alloc.h UPSTREAM: binder: fix race that allows malicious free of live buffer 2019-03-30 07:59:30 +01:00
binder_alloc_selftest.c FROMLIST: android: binder: Add global lru shrinker to binder 2017-08-31 17:29:45 -07:00
binder_trace.h ANDROID: binder: Add tracing for binder priority inheritance. 2017-10-05 09:58:05 +02:00
Kconfig UPSTREAM: ANDROID: binder: remove 32-bit binder interface. 2018-07-17 12:48:05 +02:00
Makefile FROMLIST: android: binder: Add allocator selftest 2017-08-31 17:29:30 -07:00