Race condition in HR timers that cause double insertion and hard lockup -- all latest versions

From: Itzcak Pechtalt
Date: Tue Sep 02 2014 - 12:01:01 EST


Hi,

I opened a bug in https://bugzilla.kernel.org/show_bug.cgi?id=83601 for this subject with full description.
There is also a short fix patch for kernel/hrtimer.c file.
Even if this bug occurs rary, however it resolves system hard lockup option.

I suspect that it was targeted by mistake to not active list (timers_realtime-clock@xxxxxxxxxxxxxxxxxxxx).
Following is the fix patch based on kernel 3.16.1 (just simple):
diff -uNr a/kernel/hrtimer.c b/kernel/hrtimer.c
--- a/kernel/hrtimer.c 2014-08-31 20:59:52.177452123 +0300
+++ b/kernel/hrtimer.c 2014-08-31 21:02:14.972166540 +0300
@@ -941,7 +941,7 @@
if (!timerqueue_getnext(&base->active))
base->cpu_base->active_bases &= ~(1 << base->index);
out:
- timer->state = newstate;
+ timer->state = (newstate | (timer_state & HRTIMER_STATE_CALLBACK));
}

/*

Is there a chance for this patch fix to insert into next kernel release?

Thanks

Itzcak Pechtalt

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/