aio/migratepages: make aio migrate pages sane
authorBenjamin LaHaise <bcrl@kvack.org>
Sat, 21 Dec 2013 22:56:08 +0000 (17:56 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Jan 2014 20:25:16 +0000 (12:25 -0800)
commit2b9a704149ea2a1fe2679ffa2ed7c8d692e2b660
tree87fbb2edc722f70d58b04345c63b5ebb04f2d35d
parent25c36e26d6a1021276330142f4c495235d6970de
aio/migratepages: make aio migrate pages sane

commit 8e321fefb0e60bae4e2a28d20fc4fa30758d27c6 upstream.

The arbitrary restriction on page counts offered by the core
migrate_page_move_mapping() code results in rather suspicious looking
fiddling with page reference counts in the aio_migratepage() operation.
To fix this, make migrate_page_move_mapping() take an extra_count parameter
that allows aio to tell the code about its own reference count on the page
being migrated.

While cleaning up aio_migratepage(), make it validate that the old page
being passed in is actually what aio_migratepage() expects to prevent
misbehaviour in the case of races.

Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/aio.c
include/linux/migrate.h
mm/migrate.c