aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index f3f648c8e08..54360e82854 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -1537,19 +1537,18 @@ static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize,
1537 do { 1537 do {
1538 for (i = prev; i < next; i++) { 1538 for (i = prev; i < next; i++) {
1539 unsigned long start = jiffies; 1539 unsigned long start = jiffies;
1540 struct mce *m = &mcelog.entry[i];
1540 1541
1541 while (!mcelog.entry[i].finished) { 1542 while (!m->finished) {
1542 if (time_after_eq(jiffies, start + 2)) { 1543 if (time_after_eq(jiffies, start + 2)) {
1543 memset(mcelog.entry + i, 0, 1544 memset(m, 0, sizeof(*m));
1544 sizeof(struct mce));
1545 goto timeout; 1545 goto timeout;
1546 } 1546 }
1547 cpu_relax(); 1547 cpu_relax();
1548 } 1548 }
1549 smp_rmb(); 1549 smp_rmb();
1550 err |= copy_to_user(buf, mcelog.entry + i, 1550 err |= copy_to_user(buf, m, sizeof(*m));
1551 sizeof(struct mce)); 1551 buf += sizeof(*m);
1552 buf += sizeof(struct mce);
1553timeout: 1552timeout:
1554 ; 1553 ;
1555 } 1554 }
@@ -1569,13 +1568,13 @@ timeout:
1569 on_each_cpu(collect_tscs, cpu_tsc, 1); 1568 on_each_cpu(collect_tscs, cpu_tsc, 1);
1570 1569
1571 for (i = next; i < MCE_LOG_LEN; i++) { 1570 for (i = next; i < MCE_LOG_LEN; i++) {
1572 if (mcelog.entry[i].finished && 1571 struct mce *m = &mcelog.entry[i];
1573 mcelog.entry[i].tsc < cpu_tsc[mcelog.entry[i].cpu]) { 1572
1574 err |= copy_to_user(buf, mcelog.entry+i, 1573 if (m->finished && m->tsc < cpu_tsc[m->cpu]) {
1575 sizeof(struct mce)); 1574 err |= copy_to_user(buf, m, sizeof(*m));
1576 smp_rmb(); 1575 smp_rmb();
1577 buf += sizeof(struct mce); 1576 buf += sizeof(*m);
1578 memset(&mcelog.entry[i], 0, sizeof(struct mce)); 1577 memset(m, 0, sizeof(*m));
1579 } 1578 }
1580 } 1579 }
1581 1580