From: tip-bot for Frederic Weisbecker <fweisbec@gmail.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@redhat.com,
jkacur@redhat.com, sdietrich@suse.de, fweisbec@gmail.com,
tglx@linutronix.de, mingo@elte.hu
Subject: [tip:x86/cpu] x86, msr: Remove the bkl from msr_open()
Date: Wed, 7 Oct 2009 21:10:16 GMT [thread overview]
Message-ID: <tip-d6c304055b3cecd4ca865769ac7cea97a320727b@git.kernel.org> (raw)
In-Reply-To: <1254944602-7382-1-git-send-email-fweisbec@gmail.com>
Commit-ID: d6c304055b3cecd4ca865769ac7cea97a320727b
Gitweb: http://git.kernel.org/tip/d6c304055b3cecd4ca865769ac7cea97a320727b
Author: Frederic Weisbecker <fweisbec@gmail.com>
AuthorDate: Wed, 7 Oct 2009 21:43:22 +0200
Committer: H. Peter Anvin <hpa@zytor.com>
CommitDate: Wed, 7 Oct 2009 13:47:19 -0700
x86, msr: Remove the bkl from msr_open()
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: Frederic 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: H. Peter Anvin <hpa@zytor.com>
---
arch/x86/kernel/msr.c | 16 ++++++----------
1 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c
index 7dd9500..c006109 100644
--- a/arch/x86/kernel/msr.c
+++ b/arch/x86/kernel/msr.c
@@ -174,21 +174,17 @@ static int msr_open(struct inode *inode, struct file *file)
{
unsigned int cpu = iminor(file->f_path.dentry->d_inode);
struct cpuinfo_x86 *c = &cpu_data(cpu);
- int ret = 0;
- lock_kernel();
cpu = iminor(file->f_path.dentry->d_inode);
- if (cpu >= nr_cpu_ids || !cpu_online(cpu)) {
- ret = -ENXIO; /* No such CPU */
- goto out;
- }
+ if (cpu >= nr_cpu_ids || !cpu_online(cpu))
+ return -ENXIO; /* No such CPU */
+
c = &cpu_data(cpu);
if (!cpu_has(c, X86_FEATURE_MSR))
- ret = -EIO; /* MSR not supported */
-out:
- unlock_kernel();
- return ret;
+ return -EIO; /* MSR not supported */
+
+ return 0;
}
/*
next prev parent reply other threads:[~2009-10-07 21:26 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-07 18:19 [PATCH RFC] BKL not necessary in cpuid_open John Kacur
2009-10-07 18:19 ` John Kacur
2009-10-07 19:12 ` Frederic Weisbecker
2009-10-07 19:14 ` Sven-Thorsten Dietrich
2009-10-07 19:31 ` John Kacur
2009-10-07 20:00 ` Sven-Thorsten Dietrich
2009-10-07 19:43 ` [PATCH] x86: Remove the bkl from msr_open() Frederic Weisbecker
2009-10-07 20:15 ` John Kacur
2009-10-07 21:10 ` tip-bot for Frederic Weisbecker [this message]
2009-10-07 20:13 ` [PATCH RFC] BKL not necessary in cpuid_open Frederic Weisbecker
2009-10-07 21:01 ` Thomas Gleixner
2009-10-07 21:44 ` Frederic Weisbecker
2009-10-07 21:58 ` John Kacur
2009-10-10 21:18 ` Frederic Weisbecker
2009-10-07 22:43 ` [tip:x86/cpu] x86, cpuid: Remove the bkl from cpuid_open() tip-bot for John Kacur
2009-10-09 16:05 ` [PATCH RFC] BKL not necessary in cpuid_open Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-d6c304055b3cecd4ca865769ac7cea97a320727b@git.kernel.org \
--to=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=jkacur@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=sdietrich@suse.de \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.