linux/drivers/staging/android
Alistair Strachan 5cf045f54d staging: sync: Fix a race condition between release_obj and print_obj
Before this change, a timeline would only be removed from the timeline
list *after* the sync driver had its release_obj() called. However, the
driver's release_obj() may free resources needed by print_obj().

Although the timeline list is locked when print_obj() is called, it is
not locked when release_obj() is called. If one CPU was in print_obj()
when another was in release_obj(), the print_obj() may make unsafe
accesses.

It is not actually necessary to hold the timeline list lock when calling
release_obj() if the call is made after the timeline is unlinked from
the list, since there is no possibility another thread could be in --
or enter -- print_obj() for that timeline.

This change moves the release_obj() call to after the timeline is
unlinked, preventing the above race from occurring.

Cc: Colin Cross <ccross@android.com>
Cc: Android Kernel Team <kernel-team@android.com>
Signed-off-by: Alistair Strachan <alistair.strachan@imgtec.com>
[jstultz: minor commit subject tweak]
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-02-07 09:03:16 -08:00
..
ion staging: don't use module_init in non-modular ion_dummy_driver.c 2014-02-07 09:01:09 -08:00
trace staging: sync: Add tracepoint support 2013-03-04 17:46:55 +08:00
uapi ion_test: Add compat_ioctl support (v2) 2013-12-19 16:10:25 -08:00
alarm-dev.c staging: alarm-dev: Seperate functions with one blank line 2013-11-19 15:33:39 -08:00
android_alarm.h staging: alarm-dev: Implement compat_ioctl support 2013-01-18 12:37:11 -08:00
ashmem.c staging: ashmem: Fix ASHMEM_PURGE_ALL_CACHES return value 2013-10-25 06:22:39 +01:00
ashmem.h staging: android: ashmem: Add support for 32bit ashmem calls in a 64bit kernel 2013-03-06 08:49:43 +08:00
binder.c Staging: android: Mark local functions in binder.c as static 2013-09-17 07:47:39 -07:00
binder.h staging: android: binder: fix binder interface for 64bit compat layer 2013-07-23 14:37:22 -07:00
binder_trace.h Staging: android: binder: Add some tracepoints 2012-10-22 13:04:29 -07:00
Kconfig gpu: ion: Add ION Memory Manager 2013-12-14 08:50:15 -08:00
logger.c Merge git://git.kvack.org/~bcrl/aio-next 2013-09-13 10:55:58 -07:00
logger.h staging: android: logger: use kuid_t instead of uid_t 2013-05-16 15:37:51 -07:00
lowmemorykiller.c drivers: convert shrinkers to new count/scan API 2013-09-10 18:56:32 -04:00
Makefile ion: Reenable the build 2013-12-15 09:40:11 -08:00
ram_console.h
sw_sync.c android/sw_sync: use get_unused_fd_flags(O_CLOEXEC) instead of get_unused_fd() 2013-08-15 17:26:44 -07:00
sw_sync.h staging: sw_sync: Add stubs for kernels without CONFIG_SW_SYNC 2014-02-07 09:03:16 -08:00
sync.c staging: sync: Fix a race condition between release_obj and print_obj 2014-02-07 09:03:16 -08:00
sync.h staging: android: Fix typo in android/sync.h 2013-11-11 16:22:17 -08:00
timed_gpio.c
timed_gpio.h
timed_output.c staging: android: timed_output: fix sysfs file creation race 2013-08-24 10:27:29 -07:00
timed_output.h Staging: android: Remove extern from function prototypes in .h files 2013-09-17 07:47:39 -07:00
TODO