lkml.org 
[lkml]   [2002]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] 2.4.19-pre8 vm86 smp locking fix
arch/i386/kernel/vm86.c performs page table operations without obtaining 
any locks. This patch obtains page_table_lock around the the table walk
and modification.

-ben
--
"You will be reincarnated as a toad; and you will be much happier."


diff -urN v2.4.19-pre8/arch/i386/kernel/vm86.c work/arch/i386/kernel/vm86.c
--- v2.4.19-pre8/arch/i386/kernel/vm86.c Thu Mar 7 16:39:56 2002
+++ work/arch/i386/kernel/vm86.c Thu May 23 16:21:38 2002
@@ -97,21 +97,22 @@
pte_t *pte;
int i;

+ spin_lock(&tsk->mm->page_table_lock);
pgd = pgd_offset(tsk->mm, 0xA0000);
if (pgd_none(*pgd))
- return;
+ goto out;
if (pgd_bad(*pgd)) {
pgd_ERROR(*pgd);
pgd_clear(pgd);
- return;
+ goto out;
}
pmd = pmd_offset(pgd, 0xA0000);
if (pmd_none(*pmd))
- return;
+ goto out;
if (pmd_bad(*pmd)) {
pmd_ERROR(*pmd);
pmd_clear(pmd);
- return;
+ goto out;
}
pte = pte_offset(pmd, 0xA0000);
for (i = 0; i < 32; i++) {
@@ -119,6 +120,8 @@
set_pte(pte, pte_wrprotect(*pte));
pte++;
}
+out:
+ spin_unlock(&tsk->mm->page_table_lock);
flush_tlb();
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 13:26    [W:0.052 / U:0.092 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site