|
@@ -975,7 +975,13 @@ out:
|
|
|
dec_zone_page_state(page, NR_ISOLATED_ANON +
|
|
|
page_is_file_cache(page));
|
|
|
/* Soft-offlined page shouldn't go through lru cache list */
|
|
|
- if (reason == MR_MEMORY_FAILURE) {
|
|
|
+ if (reason == MR_MEMORY_FAILURE && rc == MIGRATEPAGE_SUCCESS) {
|
|
|
+ /*
|
|
|
+ * With this release, we free successfully migrated
|
|
|
+ * page and set PG_HWPoison on just freed page
|
|
|
+ * intentionally. Although it's rather weird, it's how
|
|
|
+ * HWPoison flag works at the moment.
|
|
|
+ */
|
|
|
put_page(page);
|
|
|
if (!test_set_page_hwpoison(page))
|
|
|
num_poisoned_pages_inc();
|