Skip to content

Commit

Permalink
x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers
Browse files Browse the repository at this point in the history
register_chrdev() hardcodes registering 256 minors, presumably to
avoid breaking old drivers.  However, we need to register enough
minors so that we have all possible CPUs.

checkpatch warns on this patch, but the patch is correct: NR_CPUS here
is a static *upper bound* on the *maximum CPU index* (not *number of
CPUs!*) and that is what we want.

Reported-and-tested-by: Russ Anderson <rja@sgi.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
LKML-Reference: <tip-*@git.kernel.org>
  • Loading branch information
H. Peter Anvin committed Dec 15, 2009
1 parent 5429136 commit 0b962d4
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
5 changes: 3 additions & 2 deletions arch/x86/kernel/cpuid.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,8 @@ static int __init cpuid_init(void)
int i, err = 0;
i = 0;

if (register_chrdev(CPUID_MAJOR, "cpu/cpuid", &cpuid_fops)) {
if (__register_chrdev(CPUID_MAJOR, 0, NR_CPUS,
"cpu/cpuid", &cpuid_fops)) {
printk(KERN_ERR "cpuid: unable to get major %d for cpuid\n",
CPUID_MAJOR);
err = -EBUSY;
Expand Down Expand Up @@ -216,7 +217,7 @@ static int __init cpuid_init(void)
}
class_destroy(cpuid_class);
out_chrdev:
unregister_chrdev(CPUID_MAJOR, "cpu/cpuid");
__unregister_chrdev(CPUID_MAJOR, 0, NR_CPUS, "cpu/cpuid");
out:
return err;
}
Expand Down
4 changes: 2 additions & 2 deletions arch/x86/kernel/msr.c
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ static int __init msr_init(void)
int i, err = 0;
i = 0;

if (register_chrdev(MSR_MAJOR, "cpu/msr", &msr_fops)) {
if (__register_chrdev(MSR_MAJOR, 0, NR_CPUS, "cpu/msr", &msr_fops)) {
printk(KERN_ERR "msr: unable to get major %d for msr\n",
MSR_MAJOR);
err = -EBUSY;
Expand Down Expand Up @@ -274,7 +274,7 @@ static int __init msr_init(void)
msr_device_destroy(i);
class_destroy(msr_class);
out_chrdev:
unregister_chrdev(MSR_MAJOR, "cpu/msr");
__unregister_chrdev(MSR_MAJOR, 0, NR_CPUS, "cpu/msr");
out:
return err;
}
Expand Down

0 comments on commit 0b962d4

Please sign in to comment.