diff options
Diffstat (limited to 'fs/proc/task_mmu.c')
| -rw-r--r-- | fs/proc/task_mmu.c | 3 | 
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index da6b01d70f0..c126c83b9a4 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -706,6 +706,7 @@ static int pagemap_hugetlb_range(pte_t *pte, unsigned long hmask,   * skip over unmapped regions.   */  #define PAGEMAP_WALK_SIZE	(PMD_SIZE) +#define PAGEMAP_WALK_MASK	(PMD_MASK)  static ssize_t pagemap_read(struct file *file, char __user *buf,  			    size_t count, loff_t *ppos)  { @@ -776,7 +777,7 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,  		unsigned long end;  		pm.pos = 0; -		end = start_vaddr + PAGEMAP_WALK_SIZE; +		end = (start_vaddr + PAGEMAP_WALK_SIZE) & PAGEMAP_WALK_MASK;  		/* overflow ? */  		if (end < start_vaddr || end > end_vaddr)  			end = end_vaddr;  |