diff options
-rw-r--r-- | mm/madvise.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/mm/madvise.c b/mm/madvise.c index 51bffa414027..6975bc812542 100644 --- a/mm/madvise.c +++ b/mm/madvise.c | |||
@@ -343,15 +343,16 @@ static long madvise_remove(struct vm_area_struct *vma, | |||
343 | */ | 343 | */ |
344 | static int madvise_hwpoison(int bhv, unsigned long start, unsigned long end) | 344 | static int madvise_hwpoison(int bhv, unsigned long start, unsigned long end) |
345 | { | 345 | { |
346 | int ret = 0; | ||
347 | |||
348 | if (!capable(CAP_SYS_ADMIN)) | 346 | if (!capable(CAP_SYS_ADMIN)) |
349 | return -EPERM; | 347 | return -EPERM; |
350 | for (; start < end; start += PAGE_SIZE) { | 348 | for (; start < end; start += PAGE_SIZE) { |
351 | struct page *p; | 349 | struct page *p; |
352 | int ret = get_user_pages_fast(start, 1, 0, &p); | 350 | int ret; |
351 | |||
352 | ret = get_user_pages_fast(start, 1, 0, &p); | ||
353 | if (ret != 1) | 353 | if (ret != 1) |
354 | return ret; | 354 | return ret; |
355 | |||
355 | if (PageHWPoison(p)) { | 356 | if (PageHWPoison(p)) { |
356 | put_page(p); | 357 | put_page(p); |
357 | continue; | 358 | continue; |
@@ -369,7 +370,7 @@ static int madvise_hwpoison(int bhv, unsigned long start, unsigned long end) | |||
369 | /* Ignore return value for now */ | 370 | /* Ignore return value for now */ |
370 | memory_failure(page_to_pfn(p), 0, MF_COUNT_INCREASED); | 371 | memory_failure(page_to_pfn(p), 0, MF_COUNT_INCREASED); |
371 | } | 372 | } |
372 | return ret; | 373 | return 0; |
373 | } | 374 | } |
374 | #endif | 375 | #endif |
375 | 376 | ||