OSDN Git Service

drm_hwcomposer: Add check to vsync routine to avoid crash on callback
authorRoman Kovalivskyi <roman.kovalivskyi@globallogic.com>
Fri, 3 Jan 2020 18:26:45 +0000 (20:26 +0200)
committerJohn Stultz <john.stultz@linaro.org>
Thu, 16 Jan 2020 18:32:28 +0000 (18:32 +0000)
commit521a4c85fc4e26fd1b439cbbbf3d421534e79485
tree39f577ee81a8a875ce83ef0474f5b482ebb0ea15
parentb3d817815fad5476db178bf336282ed9f6a195b8
drm_hwcomposer: Add check to vsync routine to avoid crash on callback

Vsync could be disabled during routine being running and this could
potentially lead to crash on callback invocation. Crash happens if
VSyncControl(false) was called when Routine has cached callback and
unlocked mutex but haven't callback yet. At this point we can't be
sure that callback is still valid so invoking it is incorrect
behaviour.

Second check if vsync is enabled drastically shortens window when we
could go into invalid state, from the whole vblank invocation to
several machine instructions between check and invocation.

Please note that we can't check against cached value in this case,
therefore operations on this flag should be atomic instead.

Signed-off-by: Roman Kovalivskyi <roman.kovalivskyi@globallogic.com>
drm/vsyncworker.cpp
include/vsyncworker.h