diff options
Diffstat (limited to 'fs/proc')
-rw-r--r-- | fs/proc/base.c | 2 | ||||
-rw-r--r-- | fs/proc/task_mmu.c | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index 2fa0ce29b6dc..08cba2c3b612 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -1650,7 +1650,7 @@ static int do_proc_readlink(struct path *path, char __user *buffer, int buflen) | |||
1650 | if (!tmp) | 1650 | if (!tmp) |
1651 | return -ENOMEM; | 1651 | return -ENOMEM; |
1652 | 1652 | ||
1653 | pathname = d_path_with_unreachable(path, tmp, PAGE_SIZE); | 1653 | pathname = d_path(path, tmp, PAGE_SIZE); |
1654 | len = PTR_ERR(pathname); | 1654 | len = PTR_ERR(pathname); |
1655 | if (IS_ERR(pathname)) | 1655 | if (IS_ERR(pathname)) |
1656 | goto out; | 1656 | goto out; |
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index da6b01d70f01..c126c83b9a45 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, | |||
706 | * skip over unmapped regions. | 706 | * skip over unmapped regions. |
707 | */ | 707 | */ |
708 | #define PAGEMAP_WALK_SIZE (PMD_SIZE) | 708 | #define PAGEMAP_WALK_SIZE (PMD_SIZE) |
709 | #define PAGEMAP_WALK_MASK (PMD_MASK) | ||
709 | static ssize_t pagemap_read(struct file *file, char __user *buf, | 710 | static ssize_t pagemap_read(struct file *file, char __user *buf, |
710 | size_t count, loff_t *ppos) | 711 | size_t count, loff_t *ppos) |
711 | { | 712 | { |
@@ -776,7 +777,7 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, | |||
776 | unsigned long end; | 777 | unsigned long end; |
777 | 778 | ||
778 | pm.pos = 0; | 779 | pm.pos = 0; |
779 | end = start_vaddr + PAGEMAP_WALK_SIZE; | 780 | end = (start_vaddr + PAGEMAP_WALK_SIZE) & PAGEMAP_WALK_MASK; |
780 | /* overflow ? */ | 781 | /* overflow ? */ |
781 | if (end < start_vaddr || end > end_vaddr) | 782 | if (end < start_vaddr || end > end_vaddr) |
782 | end = end_vaddr; | 783 | end = end_vaddr; |