Re: Undefined behaviour with get_cpu_vendor

From: Andi Kleen
Date: Wed Aug 17 2005 - 06:51:19 EST


On Wed, Aug 17, 2005 at 11:54:23AM +0200, Christian Ehrhardt wrote:
>
> Hi,
>
> Your Patch at (URL wrapped)
>
> http://www.kernel.org/git/?p=linux/kernel/git/torvalds/old-2.6-bkcvs.git; \
> a=commit;h=99c6e60afff8a7bc6121aeb847dab27c556cf0c9
>
> introduced an additional Parameter (int early) to get_cpu_vendor.
> However, the same function is called in arch/i386/kernel/apic.c (via
> an explicit extern declaration that doesn't have the new early parameter.

Sigh. All people adding externs like this should be ...

But it won't change anything - the only difference with
the flag being 0 is to read less fields, but since the function
has been called earlier and the data has not changed
the output is always the same.

Anyways, the correct change is to just remove this call because it's
not needed anymore because of the early CPU detection.

> I don't know if this can cause actual problems but I think something like
> the patch below is needed for correctness.

It's not needed for correctness.

-Andi

Remove obsolete get_cpu_vendor call.

Since early CPU identify is in this information is already available

Signed-off-by: Andi Kleen <ak@xxxxxxx>


Index: linux-2.6.13-rc6-misc/arch/i386/kernel/apic.c
===================================================================
--- linux-2.6.13-rc6-misc.orig/arch/i386/kernel/apic.c
+++ linux-2.6.13-rc6-misc/arch/i386/kernel/apic.c
@@ -726,15 +726,11 @@ __setup("apic=", apic_set_verbosity);
static int __init detect_init_APIC (void)
{
u32 h, l, features;
- extern void get_cpu_vendor(struct cpuinfo_x86*);

/* Disabled by kernel option? */
if (enable_local_apic < 0)
return -1;

- /* Workaround for us being called before identify_cpu(). */
- get_cpu_vendor(&boot_cpu_data);
-
switch (boot_cpu_data.x86_vendor) {
case X86_VENDOR_AMD:
if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) ||
-
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/