diff options
author | Ingo Molnar <mingo@kernel.org> | 2017-02-16 17:25:27 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-02-16 17:25:27 +0100 |
commit | f8e1754ae9261197e41df38ee9f60a7e8a042b22 (patch) | |
tree | 100cb3cd026be3eec1b27e8a16db692c8e18d061 /lib | |
parent | 6755d070e04210d4d9826697b6f64178a8ff41cf (diff) | |
parent | dba9a0babdd938a51d11ae81f9c40d07ca613f43 (diff) |
manual merge of timers/core
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Kconfig.debug | 14 | ||||
-rw-r--r-- | lib/timerqueue.c | 3 |
2 files changed, 1 insertions, 16 deletions
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 5bbea8b20899..acedbe626d47 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -993,20 +993,6 @@ config DEBUG_TIMEKEEPING If unsure, say N. -config TIMER_STATS - bool "Collect kernel timers statistics" - depends on DEBUG_KERNEL && PROC_FS - help - If you say Y here, additional code will be inserted into the - timer routines to collect statistics about kernel timers being - reprogrammed. The statistics can be read from /proc/timer_stats. - The statistics collection is started by writing 1 to /proc/timer_stats, - writing 0 stops it. This feature is useful to collect information - about timer usage patterns in kernel and userspace. This feature - is lightweight if enabled in the kernel config but not activated - (it defaults to deactivated on bootup and will only be activated - if some application like powertop activates it explicitly). - config DEBUG_PREEMPT bool "Debug preemptible kernel" depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT diff --git a/lib/timerqueue.c b/lib/timerqueue.c index adc6ee0a5126..4a720ed4fdaf 100644 --- a/lib/timerqueue.c +++ b/lib/timerqueue.c @@ -80,8 +80,7 @@ bool timerqueue_del(struct timerqueue_head *head, struct timerqueue_node *node) if (head->next == node) { struct rb_node *rbn = rb_next(&node->node); - head->next = rbn ? - rb_entry(rbn, struct timerqueue_node, node) : NULL; + head->next = rb_entry_safe(rbn, struct timerqueue_node, node); } rb_erase(&node->node, &head->head); RB_CLEAR_NODE(&node->node); |