summaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorMiles Chen <miles.chen@mediatek.com>2018-12-28 00:33:21 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2018-12-28 12:11:46 -0800
commitc8f61cfc871fadfb73ad3eacd64fda457279e911 (patch)
treee66a7f8da6dc30887b8ab19afa71127a0493a84d /mm
parent4e45f712d82c6b7a37e02faf388173ad12ab464d (diff)
downloadlinux-c8f61cfc871fadfb73ad3eacd64fda457279e911.tar.gz
linux-c8f61cfc871fadfb73ad3eacd64fda457279e911.tar.bz2
linux-c8f61cfc871fadfb73ad3eacd64fda457279e911.zip
mm/page_owner: clamp read count to PAGE_SIZE
The (root-only) page owner read might allocate a large size of memory with a large read count. Allocation fails can easily occur when doing high order allocations. Clamp buffer size to PAGE_SIZE to avoid arbitrary size allocation and avoid allocation fails due to high order allocation. [akpm@linux-foundation.org: use min_t()] Link: http://lkml.kernel.org/r/1541091607-27402-1-git-send-email-miles.chen@mediatek.com Signed-off-by: Miles Chen <miles.chen@mediatek.com> Acked-by: Michal Hocko <mhocko@suse.com> Cc: Joe Perches <joe@perches.com> Cc: Matthew Wilcox <willy@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/page_owner.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/page_owner.c b/mm/page_owner.c
index 87bc0dfdb52b..28b06524939f 100644
--- a/mm/page_owner.c
+++ b/mm/page_owner.c
@@ -351,6 +351,7 @@ print_page_owner(char __user *buf, size_t count, unsigned long pfn,
.skip = 0
};
+ count = min_t(size_t, count, PAGE_SIZE);
kbuf = kmalloc(count, GFP_KERNEL);
if (!kbuf)
return -ENOMEM;