linux/drivers/staging/android
Christopher Lais 58526090ec staging: binder: Fix memory corruption via page aliasing
binder_deferred_release was not unmapping the page from the buffer
before freeing it, causing memory corruption.  This only happened
when page(s) had not been freed by binder_update_page_range, which
properly unmaps the pages.

This only happens on architectures with VIPT aliasing.

To reproduce, create a program which opens, mmaps, munmaps, then closes
the binder very quickly.  This should leave a page allocated when the
binder is released.  When binder_deferrred_release is called on the
close, the page will remain mapped to the address in the linear
proc->buffer.  Later, we may map the same physical page to a different
virtual address that has different coloring, and this may cause
aliasing to occur.

PAGE_POISONING will greatly increase your chances of noticing any
problems.

Signed-off-by: Christopher Lais <chris+android@zenthought.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-11-30 20:51:37 +09:00
..
binder.c staging: binder: Fix memory corruption via page aliasing 2011-11-30 20:51:37 +09:00
binder.h Revert "Staging: android: delete android drivers" 2011-11-30 20:18:14 +09:00
Kconfig Revert "Staging: android: mark subsystem as broken" 2011-11-30 20:32:24 +09:00
logger.c android: logger: Add new system log for framework/system log messages 2011-11-30 20:40:06 +09:00
logger.h android: logger: Add new system log for framework/system log messages 2011-11-30 20:40:06 +09:00
lowmemorykiller.c staging: android: lowmemkiller: Substantially reduce overhead during reclaim 2011-11-30 20:51:37 +09:00
Makefile Revert "Staging: android: delete android drivers" 2011-11-30 20:18:14 +09:00
ram_console.c Staging: android: ram_console: Start ram console earlier 2011-11-30 20:40:05 +09:00
timed_gpio.c Staging: android: timed_gpio: Request gpios. 2011-11-30 20:40:05 +09:00
timed_gpio.h Revert "Staging: android: delete android drivers" 2011-11-30 20:18:14 +09:00
timed_output.c Staging: android: timed_gpio: Properly discard invalid timeout values. 2011-11-30 20:51:36 +09:00
timed_output.h Revert "Staging: android: delete android drivers" 2011-11-30 20:18:14 +09:00
TODO Revert "Staging: android: delete android drivers" 2011-11-30 20:18:14 +09:00