Commit dfc4f94d2ff95fc92127d3e512c1df7cab274fb8
Committed by
Linus Torvalds
1 parent
89ada67917
Exists in
master
and in
7 other branches
[PATCH] remove timer debug field
Remove timer_list.magic and associated debugging code. I originally added this when a spinlock was added to timer_list - this meant that an all-zeroes timer became illegal and init_timer() was required. That spinlock isn't even there any more, although timer.base must now be initialised. I'll keep this debugging code in -mm. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 3 changed files with 2 additions and 56 deletions Side-by-side Diff
arch/s390/kernel/vtime.c
... | ... | @@ -24,7 +24,6 @@ |
24 | 24 | #include <asm/s390_ext.h> |
25 | 25 | #include <asm/timer.h> |
26 | 26 | |
27 | -#define VTIMER_MAGIC (TIMER_MAGIC + 1) | |
28 | 27 | static ext_int_info_t ext_int_info_timer; |
29 | 28 | DEFINE_PER_CPU(struct vtimer_queue, virt_cpu_timer); |
30 | 29 | |
31 | 30 | |
... | ... | @@ -277,20 +276,12 @@ |
277 | 276 | |
278 | 277 | void init_virt_timer(struct vtimer_list *timer) |
279 | 278 | { |
280 | - timer->magic = VTIMER_MAGIC; | |
281 | 279 | timer->function = NULL; |
282 | 280 | INIT_LIST_HEAD(&timer->entry); |
283 | 281 | spin_lock_init(&timer->lock); |
284 | 282 | } |
285 | 283 | EXPORT_SYMBOL(init_virt_timer); |
286 | 284 | |
287 | -static inline int check_vtimer(struct vtimer_list *timer) | |
288 | -{ | |
289 | - if (timer->magic != VTIMER_MAGIC) | |
290 | - return -EINVAL; | |
291 | - return 0; | |
292 | -} | |
293 | - | |
294 | 285 | static inline int vtimer_pending(struct vtimer_list *timer) |
295 | 286 | { |
296 | 287 | return (!list_empty(&timer->entry)); |
... | ... | @@ -346,7 +337,7 @@ |
346 | 337 | |
347 | 338 | static inline int prepare_vtimer(struct vtimer_list *timer) |
348 | 339 | { |
349 | - if (check_vtimer(timer) || !timer->function) { | |
340 | + if (!timer->function) { | |
350 | 341 | printk("add_virt_timer: uninitialized timer\n"); |
351 | 342 | return -EINVAL; |
352 | 343 | } |
... | ... | @@ -414,7 +405,7 @@ |
414 | 405 | unsigned long flags; |
415 | 406 | int cpu; |
416 | 407 | |
417 | - if (check_vtimer(timer) || !timer->function) { | |
408 | + if (!timer->function) { | |
418 | 409 | printk("mod_virt_timer: uninitialized timer\n"); |
419 | 410 | return -EINVAL; |
420 | 411 | } |
... | ... | @@ -480,11 +471,6 @@ |
480 | 471 | { |
481 | 472 | unsigned long flags; |
482 | 473 | struct vtimer_queue *vt_list; |
483 | - | |
484 | - if (check_vtimer(timer)) { | |
485 | - printk("del_virt_timer: timer not initialized\n"); | |
486 | - return -EINVAL; | |
487 | - } | |
488 | 474 | |
489 | 475 | /* check if timer is pending */ |
490 | 476 | if (!vtimer_pending(timer)) |
include/linux/timer.h
... | ... | @@ -12,16 +12,12 @@ |
12 | 12 | struct list_head entry; |
13 | 13 | unsigned long expires; |
14 | 14 | |
15 | - unsigned long magic; | |
16 | - | |
17 | 15 | void (*function)(unsigned long); |
18 | 16 | unsigned long data; |
19 | 17 | |
20 | 18 | struct timer_base_s *base; |
21 | 19 | }; |
22 | 20 | |
23 | -#define TIMER_MAGIC 0x4b87ad6e | |
24 | - | |
25 | 21 | extern struct timer_base_s __init_timer_base; |
26 | 22 | |
27 | 23 | #define TIMER_INITIALIZER(_function, _expires, _data) { \ |
... | ... | @@ -29,7 +25,6 @@ |
29 | 25 | .expires = (_expires), \ |
30 | 26 | .data = (_data), \ |
31 | 27 | .base = &__init_timer_base, \ |
32 | - .magic = TIMER_MAGIC, \ | |
33 | 28 | } |
34 | 29 | |
35 | 30 | #define DEFINE_TIMER(_name, _function, _expires, _data) \ |
kernel/timer.c
... | ... | @@ -91,30 +91,6 @@ |
91 | 91 | #endif |
92 | 92 | } |
93 | 93 | |
94 | -static void check_timer_failed(struct timer_list *timer) | |
95 | -{ | |
96 | - static int whine_count; | |
97 | - if (whine_count < 16) { | |
98 | - whine_count++; | |
99 | - printk("Uninitialised timer!\n"); | |
100 | - printk("This is just a warning. Your computer is OK\n"); | |
101 | - printk("function=0x%p, data=0x%lx\n", | |
102 | - timer->function, timer->data); | |
103 | - dump_stack(); | |
104 | - } | |
105 | - /* | |
106 | - * Now fix it up | |
107 | - */ | |
108 | - timer->magic = TIMER_MAGIC; | |
109 | -} | |
110 | - | |
111 | -static inline void check_timer(struct timer_list *timer) | |
112 | -{ | |
113 | - if (timer->magic != TIMER_MAGIC) | |
114 | - check_timer_failed(timer); | |
115 | -} | |
116 | - | |
117 | - | |
118 | 94 | static void internal_add_timer(tvec_base_t *base, struct timer_list *timer) |
119 | 95 | { |
120 | 96 | unsigned long expires = timer->expires; |
... | ... | @@ -177,7 +153,6 @@ |
177 | 153 | { |
178 | 154 | timer->entry.next = NULL; |
179 | 155 | timer->base = &per_cpu(tvec_bases, raw_smp_processor_id()).t_base; |
180 | - timer->magic = TIMER_MAGIC; | |
181 | 156 | } |
182 | 157 | EXPORT_SYMBOL(init_timer); |
183 | 158 | |
... | ... | @@ -230,7 +205,6 @@ |
230 | 205 | int ret = 0; |
231 | 206 | |
232 | 207 | BUG_ON(!timer->function); |
233 | - check_timer(timer); | |
234 | 208 | |
235 | 209 | base = lock_timer_base(timer, &flags); |
236 | 210 | |
... | ... | @@ -283,9 +257,6 @@ |
283 | 257 | unsigned long flags; |
284 | 258 | |
285 | 259 | BUG_ON(timer_pending(timer) || !timer->function); |
286 | - | |
287 | - check_timer(timer); | |
288 | - | |
289 | 260 | spin_lock_irqsave(&base->t_base.lock, flags); |
290 | 261 | timer->base = &base->t_base; |
291 | 262 | internal_add_timer(base, timer); |
... | ... | @@ -316,8 +287,6 @@ |
316 | 287 | { |
317 | 288 | BUG_ON(!timer->function); |
318 | 289 | |
319 | - check_timer(timer); | |
320 | - | |
321 | 290 | /* |
322 | 291 | * This is a common optimization triggered by the |
323 | 292 | * networking code - if the timer is re-modified |
... | ... | @@ -348,8 +317,6 @@ |
348 | 317 | unsigned long flags; |
349 | 318 | int ret = 0; |
350 | 319 | |
351 | - check_timer(timer); | |
352 | - | |
353 | 320 | if (timer_pending(timer)) { |
354 | 321 | base = lock_timer_base(timer, &flags); |
355 | 322 | if (timer_pending(timer)) { |
... | ... | @@ -412,8 +379,6 @@ |
412 | 379 | */ |
413 | 380 | int del_timer_sync(struct timer_list *timer) |
414 | 381 | { |
415 | - check_timer(timer); | |
416 | - | |
417 | 382 | for (;;) { |
418 | 383 | int ret = try_to_del_timer_sync(timer); |
419 | 384 | if (ret >= 0) |