summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKoro Chen <koro.chen@mediatek.com>2016-07-05 15:40:49 +0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2016-11-21 23:59:59 +0000
commit92beb2bf394e86e17c3c1aecb2b40a912b787997 (patch)
tree5a4ab4c0c661df38152bafc4a497fd942f01b1a4
parentaca2f16a3091a4dc4dab687a63beeaeb64e47e16 (diff)
downloadchrome-ec-92beb2bf394e86e17c3c1aecb2b40a912b787997.tar.gz
UPSTREAM: motion: Fix comparison between signed and unsigned integer
If wait_us < 0, comparison against motion_min_interval actually fails, and this negative wait_us causes task_wait_event() never returns if we are not using any motion task event except the timer. The motion task will then stop running and sensor data stay unchanged. BRANCH=samus BUG=chrome-os-partner:54092, b:27849483 TEST=hardcode wait_us to a negative value before motion_min_interval check, and see motion task is still running by EC console cmd timerinfo Change-Id: Ic1e7ffeeb9d2ec1f5c5beb4387294014298123af Signed-off-by: Koro Chen <koro.chen@mediatek.com> Reviewed-on: https://chromium-review.googlesource.com/358332 Reviewed-by: Gwendal Grignou <gwendal@chromium.org> (cherry picked from commit 3f5d978bd523caf5797fcfeed08a5d28e6d31d79) Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/378324
-rw-r--r--common/motion_sense.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/common/motion_sense.c b/common/motion_sense.c
index 758d995e83..da9e10d7e5 100644
--- a/common/motion_sense.c
+++ b/common/motion_sense.c
@@ -827,6 +827,9 @@ void motion_sense_task(void)
wait_us = motion_interval -
(ts_end_task.val - ts_begin_task.val);
+ /* and it cannnot be negative */
+ wait_us = MAX(wait_us, 0);
+
/*
* Guarantee some minimum delay to allow other lower
* priority tasks to run.