summaryrefslogtreecommitdiff
path: root/mm/madvise.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-10-09 09:05:05 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-10-09 09:05:05 +0200
commit9424e8b1fedbaff34df187fdb87f9a9cba2d0ff2 (patch)
tree7a595ccc67ae0cd9a414383ff2f6ede291c7dc18 /mm/madvise.c
parentbccf1da3546cc7aeefadc63cd4356ab8dc04c1e3 (diff)
parent8a5776a5f49812d29fe4b2d0a2d71675c3facf3f (diff)
downloadlwn-9424e8b1fedbaff34df187fdb87f9a9cba2d0ff2.tar.gz
lwn-9424e8b1fedbaff34df187fdb87f9a9cba2d0ff2.zip
Merge 4.14-rc4 into tty-next
We want the tty/serial fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm/madvise.c')
-rw-r--r--mm/madvise.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/mm/madvise.c b/mm/madvise.c
index 21261ff0466f..25bade36e9ca 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -625,18 +625,26 @@ static int madvise_inject_error(int behavior,
{
struct page *page;
struct zone *zone;
+ unsigned int order;
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
- for (; start < end; start += PAGE_SIZE <<
- compound_order(compound_head(page))) {
+
+ for (; start < end; start += PAGE_SIZE << order) {
int ret;
ret = get_user_pages_fast(start, 1, 0, &page);
if (ret != 1)
return ret;
+ /*
+ * When soft offlining hugepages, after migrating the page
+ * we dissolve it, therefore in the second loop "page" will
+ * no longer be a compound page, and order will be 0.
+ */
+ order = compound_order(compound_head(page));
+
if (PageHWPoison(page)) {
put_page(page);
continue;