Re: [PATCH] OProfile: Fix oops on undetected CPU type

From: Zwane Mwaikambo
Date: Sat Jan 29 2005 - 11:49:26 EST


On Sat, 29 Jan 2005, John Levon wrote:

> On Fri, Jan 28, 2005 at 12:06:19PM -0700, Zwane Mwaikambo wrote:
>
> > ===== drivers/oprofile/oprofile_files.c 1.7 vs edited =====
> > --- 1.7/drivers/oprofile/oprofile_files.c 2005-01-04 19:48:23 -07:00
> > +++ edited/drivers/oprofile/oprofile_files.c 2005-01-28 11:36:25 -07:00
> > @@ -63,7 +63,9 @@ static struct file_operations pointer_si
> >
> > static ssize_t cpu_type_read(struct file * file, char __user * buf, size_t count, loff_t * offset)
> > {
> > - return oprofilefs_str_to_user(oprofile_ops.cpu_type, buf, count, offset);
> > + if (oprofile_ops.cpu_type)
> > + return oprofilefs_str_to_user(oprofile_ops.cpu_type, buf, count, offset);
> > + return -EIO;
>
> This is wrong: you need to investigate why .cpu_type isn't set: in
> particular, it should have fallen back to timer mode.
> oprofile_arch_init() should have returned -ENODEV, and that should have
> set timer mode.
>
> Unfortunately bkcvs seems out of date so I can't even look at this
> myself.

Yes you are right, i checked bk and there was a lot of shuffling about due
to the timer override. But it looks like we're depending on the timer
variable being set. We could always just run timer_init if cpu_type is not
set.

Signed-off-by: Zwane Mwaikambo <zwane@xxxxxxxxxxxxxxxx>

===== drivers/oprofile/oprof.c 1.11 vs edited =====
--- 1.11/drivers/oprofile/oprof.c 2005-01-04 19:48:23 -07:00
+++ edited/drivers/oprofile/oprof.c 2005-01-29 09:38:24 -07:00
@@ -157,7 +157,7 @@ static int __init oprofile_init(void)

oprofile_arch_init(&oprofile_ops);

- if (timer) {
+ if (timer || !oprofile_ops.cpu_type) {
printk(KERN_INFO "oprofile: using timer interrupt.\n");
oprofile_timer_init(&oprofile_ops);
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/