Commit 9bde916b authored by Chen Gang's avatar Chen Gang Committed by Linus Torvalds

mm/nommu.c: add additional check for vread() just like vwrite() has done

vwrite() checks for overflow. vread() should do the same thing.

Since vwrite() checks the source buffer address, vread() should check
the destination buffer address.
Signed-off-by: default avatarChen Gang <gang.chen@asianux.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Michel Lespinasse <walken@google.com>
Cc: Rik van Riel <riel@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent dacbde09
...@@ -282,6 +282,10 @@ EXPORT_SYMBOL(vmalloc_to_pfn); ...@@ -282,6 +282,10 @@ EXPORT_SYMBOL(vmalloc_to_pfn);
long vread(char *buf, char *addr, unsigned long count) long vread(char *buf, char *addr, unsigned long count)
{ {
/* Don't allow overflow */
if ((unsigned long) buf + count < count)
count = -(unsigned long) buf;
memcpy(buf, addr, count); memcpy(buf, addr, count);
return count; return count;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment