summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2010-03-12 17:34:14 +0100
committerThomas Gleixner <tglx@linutronix.de>2010-03-12 19:10:29 +0100
commit80a05b9ffa7dc13f6693902dd8999a2b61a3a0d7 (patch)
tree5612eeb26804b135de66779d1a00eaf35a4ceca1 /include
parentad6759fbf35d104dbf573cd6f4c6784ad6823f7e (diff)
downloadlinux-0-day-80a05b9ffa7dc13f6693902dd8999a2b61a3a0d7.tar.gz
linux-0-day-80a05b9ffa7dc13f6693902dd8999a2b61a3a0d7.tar.xz
clockevents: Sanitize min_delta_ns adjustment and prevent overflows
The current logic which handles clock events programming failures can increase min_delta_ns unlimited and even can cause overflows. Sanitize it by: - prevent zero increase when min_delta_ns == 1 - limiting min_delta_ns to a jiffie - bail out if the jiffie limit is hit - add retries stats for /proc/timer_list so we can gather data Reported-by: Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include')
-rw-r--r--include/linux/clockchips.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h
index 0cf725bdd2a1a..fc53492b6ad7f 100644
--- a/include/linux/clockchips.h
+++ b/include/linux/clockchips.h
@@ -73,6 +73,7 @@ enum clock_event_nofitiers {
* @list: list head for the management code
* @mode: operating mode assigned by the management code
* @next_event: local storage for the next event in oneshot mode
+ * @retries: number of forced programming retries
*/
struct clock_event_device {
const char *name;
@@ -93,6 +94,7 @@ struct clock_event_device {
struct list_head list;
enum clock_event_mode mode;
ktime_t next_event;
+ unsigned long retries;
};
/*