* [PATCH] vmalloc fix
@ 2004-01-21 3:58 Anton Blanchard
0 siblings, 0 replies; only message in thread
From: Anton Blanchard @ 2004-01-21 3:58 UTC (permalink / raw)
To: linux-kernel; +Cc: akpm
Hi,
Paul wrote a patch to use some of the rmap infrastructure to flush TLB
entries on ppc64. When testing it we found a problem in vmalloc where it
sets up the pte -> address mapping incorrectly. We clear the top bits of
the address but then forget to pass in the full address to
pte_alloc_kernel. The end result is the address in page->index is
truncated.
I fixed it in a similar way to how zeromap_pmd_range etc does it. Im
guessing no one uses the rmap hooks on vmalloc pages yet, so havent seen
this problem.
Anton
===== mm/vmalloc.c 1.29 vs edited =====
--- 1.29/mm/vmalloc.c Wed Oct 8 12:53:44 2003
+++ edited/mm/vmalloc.c Wed Jan 21 14:48:23 2004
@@ -114,15 +114,16 @@
unsigned long size, pgprot_t prot,
struct page ***pages)
{
- unsigned long end;
+ unsigned long base, end;
+ base = address & PGDIR_MASK;
address &= ~PGDIR_MASK;
end = address + size;
if (end > PGDIR_SIZE)
end = PGDIR_SIZE;
do {
- pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address);
+ pte_t * pte = pte_alloc_kernel(&init_mm, pmd, base + address);
if (!pte)
return -ENOMEM;
if (map_area_pte(pte, address, end - address, prot, pages))
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-01-21 4:03 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-01-21 3:58 [PATCH] vmalloc fix Anton Blanchard
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.