Skip to content

Commit

Permalink
[AVR32] Fix bogus pte_page() definition
Browse files Browse the repository at this point in the history
The current definition of pte_page() masks out valid bits from the
physical address, causing vmalloc_to_page() to misbehave. This may
lead to everything from mmap() silently accessing the wrong data to
"invalid pte" errors dumped by the kernel.

Also remove the now-unused definition of PTE_PHYS_MASK.

Thanks to Matteo Vit for discovering this bug.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
  • Loading branch information
Haavard Skinnemoen committed Aug 15, 2007
1 parent e7f3bac commit 6f83419
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions include/asm-avr32/pgtable.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@
#define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE)
#define FIRST_USER_ADDRESS 0

#define PTE_PHYS_MASK 0x1ffff000

#ifndef __ASSEMBLY__
extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
extern void paging_init(void);
Expand Down Expand Up @@ -265,7 +263,7 @@ static inline pte_t pte_mkyoung(pte_t pte)
* trivial.
*/
#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
#define pte_page(x) phys_to_page(pte_val(x) & PTE_PHYS_MASK)
#define pte_page(x) (pfn_to_page(pte_pfn(x)))

/*
* Mark the prot value as uncacheable and unbufferable
Expand Down

0 comments on commit 6f83419

Please sign in to comment.