Browse Source

[SPARC64]: Add missing HPAGE_MASK masks on address parameters.

These pte loops all assume the passed in address is HPAGE
aligned, make sure that is actually true.

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 18 years ago
parent
commit
bb8236f2b9
1 changed files with 3 additions and 0 deletions
  1. 3 0
      arch/sparc64/mm/hugetlbpage.c

+ 3 - 0
arch/sparc64/mm/hugetlbpage.c

@@ -248,6 +248,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
 	if (!pte_present(*ptep) && pte_present(entry))
 	if (!pte_present(*ptep) && pte_present(entry))
 		mm->context.huge_pte_count++;
 		mm->context.huge_pte_count++;
 
 
+	addr &= HPAGE_MASK;
 	for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
 	for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
 		set_pte_at(mm, addr, ptep, entry);
 		set_pte_at(mm, addr, ptep, entry);
 		ptep++;
 		ptep++;
@@ -266,6 +267,8 @@ pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
 	if (pte_present(entry))
 	if (pte_present(entry))
 		mm->context.huge_pte_count--;
 		mm->context.huge_pte_count--;
 
 
+	addr &= HPAGE_MASK;
+
 	for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
 	for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
 		pte_clear(mm, addr, ptep);
 		pte_clear(mm, addr, ptep);
 		addr += PAGE_SIZE;
 		addr += PAGE_SIZE;