mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
509a910962
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. Signed-off-by: Alistair Strachan <alistair.strachan@imgtec.com> Signed-off-by: Ed Tam <etam@google.com> |
||
---|---|---|
.. | ||
power | ||
regmap | ||
attribute_container.c | ||
base.h | ||
bus.c | ||
class.c | ||
core.c | ||
cpu.c | ||
dd.c | ||
devres.c | ||
devtmpfs.c | ||
dma-buf.c | ||
dma-coherent.c | ||
dma-contiguous.c | ||
dma-mapping.c | ||
driver.c | ||
firmware.c | ||
firmware_class.c | ||
genlock.c | ||
hypervisor.c | ||
init.c | ||
isa.c | ||
Kconfig | ||
Makefile | ||
map.c | ||
memory.c | ||
module.c | ||
node.c | ||
platform.c | ||
soc.c | ||
sw_sync.c | ||
sync.c | ||
sys.c | ||
syscore.c | ||
topology.c | ||
transport_class.c |