|
@@ -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;
|