msm: kgsl: Fix race between kgsl device open and close
In current code, kgsl_close_device holds device mutex and calls
last_close in case open_count goes to zero. But as part of
last_close call, device mutex is released intermittently to wait
for active count to go to zero and also for dispatcher idle. This
intermittent release of device mutex opens up a window where a
kgsl_open_device call can go ahead and call first_open. As this
first_open is triggered before last_close could finish it messes
up the complete state machine. To fix this, move decrement of
open_count after last_close to allow any open/close happening when
last_close is in progress to just increment/decrement open_count
without triggering first_open or last_close.
Change-Id: Ibb2567e3ef0dc1864f2bfca346b0682792d0b675
Signed-off-by:
Deepak Kumar <dkumar@codeaurora.org>
Loading
Please register or sign in to comment