rtc: alarm: Fix data handling issue with alarm->type

Restructure data handling in alarm_start_relative and
alarm_try_to_cancel for the possibility of alarm->type
referenced incorrectly.

Change-Id: I053fcaff28e4746aeef299c9605d757df2dea532
Signed-off-by: Venkatesh Yadav Abbarapu <quicvenkat@codeaurora.org>
This commit is contained in:
Venkatesh Yadav Abbarapu 2015-02-27 12:29:10 +05:30
parent e4e704c1ff
commit dcde73d2da
1 changed files with 12 additions and 2 deletions

View File

@ -441,8 +441,13 @@ int alarm_start(struct alarm *alarm, ktime_t start)
*/
int alarm_start_relative(struct alarm *alarm, ktime_t start)
{
struct alarm_base *base = &alarm_bases[alarm->type];
struct alarm_base *base;
if (alarm->type >= ALARM_NUMTYPE) {
pr_err("Array out of index\n");
return -EINVAL;
}
base = &alarm_bases[alarm->type];
start = ktime_add(start, base->gettime());
return alarm_start(alarm, start);
}
@ -468,10 +473,15 @@ void alarm_restart(struct alarm *alarm)
*/
int alarm_try_to_cancel(struct alarm *alarm)
{
struct alarm_base *base = &alarm_bases[alarm->type];
struct alarm_base *base;
unsigned long flags;
int ret;
if (alarm->type >= ALARM_NUMTYPE) {
pr_err("Array out of index\n");
return -EINVAL;
}
base = &alarm_bases[alarm->type];
spin_lock_irqsave(&base->lock, flags);
ret = hrtimer_try_to_cancel(&alarm->timer);
if (ret >= 0)