• F
    x86, msr: Remove the bkl from msr_open() · d6c30405
    Frederic Weisbecker 提交于
    Remove the big kernel lock from msr_open() as it doesn't protect
    anything there.
    
    The only racy event that can happen here is a concurrent cpu shutdown.
    
    So let's look at what could be racy during/after the above event:
    
    - The cpu_online() check is racy, but the bkl doesn't help about
      that anyway it disables preemption but we may be chcking another
      cpu than the current one.
      Also the cpu can still become offlined between open and read calls.
    
    - The cpu_data(cpu) returns a safe pointer too. It won't be released on
      cpu offlining. But some fields can be changed from
      arch/x86/kernel/smpboot.c:remove_siblinginfo() :
    
    	- phys_proc_id
    	- cpu_core_id
    
      Those are not read from msr_open(). What we are checking is the
      x86_capability that is left untouched on offlining.
    
    So this removal looks safe.
    Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
    Cc: John Kacur <jkacur@redhat.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Sven-Thorsten Dietrich <sdietrich@suse.de>
    LKML-Reference: <1254944602-7382-1-git-send-email-fweisbec@gmail.com>
    Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
    d6c30405
msr.c 6.4 KB