This patch fixes xenlinux timer interrupt.
In xenlinux timer interrupt variable cpu is sometimes uesd in a for
loop, but later it is used to access per cpu data i.e.
per_cpu(processed_system_time, cpu), which causes an invalid pointer.
Signed-off-by: Xin Li <xin.b.li@xxxxxxxxx>
-Xin
diff -r 5c49ed1145cc linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c Fri Sep 9
23:11:18 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c Sat Sep 10
13:14:07 2005
@@ -543,7 +543,7 @@
irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs
*regs)
{
s64 delta, delta_cpu;
- int cpu = smp_processor_id();
+ int i, cpu = smp_processor_id();
struct shadow_time_info *shadow = &per_cpu(shadow_time, cpu);
write_seqlock(&xtime_lock);
@@ -566,9 +566,9 @@
(s64)get_nsec_offset(shadow),
processed_system_time,
per_cpu(processed_system_time, cpu));
- for (cpu = 0; cpu < num_online_cpus(); cpu++)
- printk(" %d: %lld\n", cpu,
- per_cpu(processed_system_time, cpu));
+ for (i = 0; i < num_online_cpus(); i++)
+ printk(" %d: %lld\n", i,
+ per_cpu(processed_system_time, i));
}
/* System-wide jiffy work. */
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|