From 3f5d978bd523caf5797fcfeed08a5d28e6d31d79 Mon Sep 17 00:00:00 2001 From: Koro Chen Date: Tue, 5 Jul 2016 15:40:49 +0800 Subject: [PATCH] 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=none BUG=chrome-os-partner:54092 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 Reviewed-on: https://chromium-review.googlesource.com/358332 Reviewed-by: Gwendal Grignou --- common/motion_sense.c | 3 +++ 1 file changed, 3 insertions(+) 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.