Subject: Re: linux-next: Tree for May 29 (__rdmsr_on_cpu() OOPS)

From: Borislav Petkov <[email-masked]>
Date: Tue, 2 Jun 2009 16:13:25 +0200

Hi,

On Sat, May 30, 2009 at 09:37:57PM +0200, Bartlomiej Zolnierkiewicz wrote:
> 
> next-20090529 oopses in __rdmsr_on_cpu() on my Pentium M laptop.
> 
> .jpg + .config:
> http://www.kernel.org/pub/linux/kernel/people/bart/next-20090529-oops.*
> 
> (gdb) l *0xc023410f
> 0xc023410f is in __rdmsr_on_cpu (arch/x86/lib/msr.c:25).
> 20              if (rv->msrs)
> 21                      reg = &rv->msrs[this_cpu - rv->off];
> 22              else
> 23                      reg = &rv->reg;
> 24
> 25              rdmsr(rv->msr_no, reg->l, reg->h);
> 26      }
> 27
> 28      static void __wrmsr_on_cpu(void *info)
> 29      {
> 
> Thus the problem seems to be introduced by:
> 
> commit 23d19840368b2787d2da97ad0f0f29248503648a
> Author: Borislav Petkov <[email-masked]>
> Date:   Fri May 22 13:52:19 2009 +0200
> 
>     x86: MSR: add methods for writing of an MSR on several CPUs
> ...
> 
> and indeed the following patch fixes it:
> 
> [ Borislav, feel free to fold it into the above change or replace by
>   a more complete one if needed (there may be more rv fields needing
>   initialization). ]
> 
> From: Bartlomiej Zolnierkiewicz <[email-masked]>
> Subject: [PATCH] x86: MSR: fix __rdmsr_on_cpu() OOPS
> 
> {rd,wr}msr_on_cpu() need to explicitly initalize rv.msrs
> (since rv is allocated on the stack).
> 
> Cc: Borislav Petkov <[email-masked]>
> Signed-off-by: Bartlomiej Zolnierkiewicz <[email-masked]>

Thanks.

I went and zeroed out the whole struct so that no stale data sneaks
in. I'm still adding your S-O-B to the patch, if you don't mind, that
is.

-- 
Regards/Gruss,
Boris.

Operating | Advanced Micro Devices GmbH
  System  | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany
 Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni
  Center  | Sitz: Dornach, Gemeinde Aschheim, Landkreis München
  (OSRC)  | Registergericht München, HRB Nr. 43632