Prevents possible SIGSEGV on second autosuspend_enable attempt when first intialization attempt fails. autosuspend_inited should only be set once autosuspend_ops has been assigned. Consider the first call to autosuspend_enable(). autosuspend_init() sets its inited flag to true, and attempts to set autosuspend_ops. If all the other autosuspend_*_init() attempts fail, autosuspend_init() returns -1, which autosuspend_enable() will return as a failure. A second call to autosuspend_enable() will check autosuspend_init() and see that autosuspend has already been initialized. It will attempt to access autosuspend_ops, which were not set in the first initialization attempt, causing a SIGSEGV. Change-Id: Ib2d3ee62fee4c3b6d0323e5b7f3709a23c6b923f |
||
|---|---|---|
| .. | ||
| include/suspend | ||
| Android.mk | ||
| autosuspend.c | ||
| autosuspend_autosleep.c | ||
| autosuspend_earlysuspend.c | ||
| autosuspend_ops.h | ||
| autosuspend_wakeup_count.c | ||