diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2009-10-12 14:23:47 +1100 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2009-10-12 14:23:47 +1100 |
commit | 19ec9314cca3c2332225e8c1d88a238cd8576e91 (patch) | |
tree | 527d7a59e4466817184bddd44e815d118af881f7 /mm | |
parent | 18ae642c15bc25f652c26bc2cb470f1c912df7b5 (diff) | |
parent | cfdb1bf3eaa79e7280d85c5e7fa9cdb899e101bd (diff) |
Merge remote branch 'tip/auto-latest'
Conflicts:
drivers/mtd/maps/gpio-addr-flash.c
Diffstat (limited to 'mm')
-rw-r--r-- | mm/migrate.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/mm/migrate.c b/mm/migrate.c index 1a4bf4813780..5b9ebc5f4ef6 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1044,11 +1044,15 @@ static int do_pages_stat(struct mm_struct *mm, unsigned long nr_pages, int err; for (i = 0; i < nr_pages; i += chunk_nr) { + unsigned int copy; if (chunk_nr + i > nr_pages) chunk_nr = nr_pages - i; - err = copy_from_user(chunk_pages, &pages[i], - chunk_nr * sizeof(*chunk_pages)); + copy = chunk_nr * sizeof(*chunk_pages); + if (copy > DO_PAGES_STAT_CHUNK_NR) + return -EFAULT; + + err = copy_from_user(chunk_pages, &pages[i], copy); if (err) { err = -EFAULT; goto out; |