diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-03-12 17:34:14 +0100 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2010-03-12 19:10:29 +0100 |
commit | 80a05b9ffa7dc13f6693902dd8999a2b61a3a0d7 (patch) | |
tree | 5612eeb26804b135de66779d1a00eaf35a4ceca1 /include/linux | |
parent | ad6759fbf35d104dbf573cd6f4c6784ad6823f7e (diff) | |
download | blackbird-op-linux-80a05b9ffa7dc13f6693902dd8999a2b61a3a0d7.tar.gz blackbird-op-linux-80a05b9ffa7dc13f6693902dd8999a2b61a3a0d7.zip |
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/linux')
-rw-r--r-- | include/linux/clockchips.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h index 0cf725bdd2a1..fc53492b6ad7 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; }; /* |