From a27438217d85350c4159305a189c920b9a26a453 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Mon, 25 Aug 2008 17:28:20 -0700 Subject: [PATCH] --- yaml --- r: 109299 b: refs/heads/master c: 4b46ca701bdcdc19fcf32823f9fcabf8236e4e78 h: refs/heads/master i: 109297: 78d23742c6d57bb7165bdc480de97ef7c5a8ae04 109295: f5b2094d928525c19a93d62423dfa91552df1326 v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/cpuid.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 25847d250de1..56c7f3dbc2a5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c6f31932d0a1d2b13952f506ebc92675e2d8df80 +refs/heads/master: 4b46ca701bdcdc19fcf32823f9fcabf8236e4e78 diff --git a/trunk/arch/x86/kernel/cpuid.c b/trunk/arch/x86/kernel/cpuid.c index 14b11b3be31c..23e8316c8357 100644 --- a/trunk/arch/x86/kernel/cpuid.c +++ b/trunk/arch/x86/kernel/cpuid.c @@ -89,6 +89,7 @@ static ssize_t cpuid_read(struct file *file, char __user *buf, struct cpuid_regs cmd; int cpu = iminor(file->f_path.dentry->d_inode); u64 pos = *ppos; + int err; if (count % 16) return -EINVAL; /* Invalid chunk size */ @@ -96,7 +97,9 @@ static ssize_t cpuid_read(struct file *file, char __user *buf, for (; count; count -= 16) { cmd.eax = pos; cmd.ecx = pos >> 32; - smp_call_function_single(cpu, cpuid_smp_cpuid, &cmd, 1); + err = smp_call_function_single(cpu, cpuid_smp_cpuid, &cmd, 1); + if (err) + return err; if (copy_to_user(tmp, &cmd, 16)) return -EFAULT; tmp += 16;