hrtimer.h: prevent pinned timer state from breaking inactive test

An hrtimer may be pinned to a CPU but inactive, so it is no longer valid
to test the hrtimer.state struct member as having no bits set when inactive.
Changed the test function to mask out the HRTIMER_STATE_PINNED bit when
checking for inactive state.

Change-Id: Icb4156f4b7cb10138ea6c5cd5b762e35dc25428d
Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
[ohaugan@codeaurora.org: Port to 4.4]
Git-commit: 902e4d4eb0d2158d2792166221a72a829caecf07
Git-repo: git://git.linaro.org/people/mike.holmes/santosh.shukla/lng-isol.git
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
[satyap@codeaurora.org: Port to 4.19 and fix merge conflicts]
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
This commit is contained in:
Gary S. Robertson 2014-09-10 14:57:16 -05:00 committed by Satya Durga Srinivasu Prabhala
parent 1344cf5f0f
commit fe3df39e04

View file

@ -1336,8 +1336,8 @@ bool hrtimer_active(const struct hrtimer *timer)
base = READ_ONCE(timer->base);
seq = raw_read_seqcount_begin(&base->seq);
if (timer->state != HRTIMER_STATE_INACTIVE ||
base->running == timer)
if (((timer->state & ~HRTIMER_STATE_PINNED) !=
HRTIMER_STATE_INACTIVE) || base->running == timer)
return true;
} while (read_seqcount_retry(&base->seq, seq) ||