[AVR32] Fix bogus pte_page() definition
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>
This commit is contained in:
parent
e7f3bac95e
commit
6f834197a7
|
@ -32,8 +32,6 @@
|
||||||
#define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE)
|
#define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE)
|
||||||
#define FIRST_USER_ADDRESS 0
|
#define FIRST_USER_ADDRESS 0
|
||||||
|
|
||||||
#define PTE_PHYS_MASK 0x1ffff000
|
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
|
extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
|
||||||
extern void paging_init(void);
|
extern void paging_init(void);
|
||||||
|
@ -265,7 +263,7 @@ static inline pte_t pte_mkyoung(pte_t pte)
|
||||||
* trivial.
|
* trivial.
|
||||||
*/
|
*/
|
||||||
#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
|
#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
|
* Mark the prot value as uncacheable and unbufferable
|
||||||
|
|
Loading…
Reference in New Issue