From: Vitaly Mayatskikh Date: Thu, 30 Apr 2009 22:08:18 +0000 (-0700) Subject: pagemap: require aligned-length, non-null reads of /proc/pid/pagemap X-Git-Tag: v2.6.27.23~11 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=c7273beb2266d3058ef299e2135be7edce5cd03f;p=karo-tx-linux.git pagemap: require aligned-length, non-null reads of /proc/pid/pagemap commit 0816178638c15ce5472d39d771a96860dff4141a upstream. The intention of commit aae8679b0ebcaa92f99c1c3cb0cd651594a43915 ("pagemap: fix bug in add_to_pagemap, require aligned-length reads of /proc/pid/pagemap") was to force reads of /proc/pid/pagemap to be a multiple of 8 bytes, but now it allows to read 0 bytes, which actually puts some data to user's buffer. According to POSIX, if count is zero, read() should return zero and has no other results. Signed-off-by: Vitaly Mayatskikh Cc: Thomas Tuttle Acked-by: Matt Mackall Cc: Alexey Dobriyan Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 8b84227b0c44..c7f64a9f11b1 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -665,6 +665,10 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, goto out_task; ret = 0; + + if (!count) + goto out_task; + mm = get_task_mm(task); if (!mm) goto out_task;