Messages in this thread | | | Date | Thu, 05 Mar 2020 01:46:03 -0800 | Subject | Re: [PATCH] x86/cpuid: Use macro instead of number in cpuid_read() | From | hpa@zytor ... |
| |
On March 5, 2020 1:33:18 AM PST, Yu Chen <chen.yu@easystack.cn> wrote: >Make and use macro CHUNK_SIZE, instead of numeric value 16 in >cpuid_read(). > >Signed-off-by: Yu Chen <chen.yu@easystack.cn> >--- > arch/x86/kernel/cpuid.c | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > >diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c >index 3492aa36b..f7d7e0ef7 100644 >--- a/arch/x86/kernel/cpuid.c >+++ b/arch/x86/kernel/cpuid.c >@@ -48,6 +48,9 @@ struct cpuid_regs_done { > struct completion done; > }; > >+/* cpuid must be read in chunks of 16 bytes */ >+#define CHUNK_SIZE 16 >+ > static void cpuid_smp_cpuid(void *cmd_block) > { > struct cpuid_regs_done *cmd = cmd_block; >@@ -69,11 +72,11 @@ static ssize_t cpuid_read(struct file *file, char >__user *buf, > ssize_t bytes = 0; > int err = 0; > >- if (count % 16) >+ if (count % CHUNK_SIZE) > return -EINVAL; /* Invalid chunk size */ > > init_completion(&cmd.done); >- for (; count; count -= 16) { >+ for (; count; count -= CHUNK_SIZE) { > call_single_data_t csd = { > .func = cpuid_smp_cpuid, > .info = &cmd, >@@ -86,12 +89,12 @@ static ssize_t cpuid_read(struct file *file, char >__user *buf, > if (err) > break; > wait_for_completion(&cmd.done); >- if (copy_to_user(tmp, &cmd.regs, 16)) { >+ if (copy_to_user(tmp, &cmd.regs, CHUNK_SIZE)) { > err = -EFAULT; > break; > } >- tmp += 16; >- bytes += 16; >+ tmp += CHUNK_SIZE; >+ bytes += CHUNK_SIZE; > *ppos = ++pos; > reinit_completion(&cmd.done); > }
It would make more sense to define a structure and add it to a uapi header. -- Sent from my Android device with K-9 Mail. Please excuse my brevity.
| |