When encounter pte is a swap entry, the current code handles two cases:
migration and normal swapentry, but we have a third case: hwpoison page.
This patch adds hwpoison page handle, consider hwpoison page incore as
same as migration.
Signed-off-by: Weijie Yang <[email protected]>
---
mm/mincore.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/mincore.c b/mm/mincore.c
index 725c809..3545f13 100644
--- a/mm/mincore.c
+++ b/mm/mincore.c
@@ -137,8 +137,8 @@ static void mincore_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
} else { /* pte is a swap entry */
swp_entry_t entry = pte_to_swp_entry(pte);
- if (is_migration_entry(entry)) {
- /* migration entries are always uptodate */
+ if (non_swap_entry(entry)) {
+ /* migration or hwpoison entries are always uptodate */
*vec = 1;
} else {
#ifdef CONFIG_SWAP
--
1.7.0.4
On Wed, Nov 12, 2014 at 11:39:29AM +0800, Weijie Yang wrote:
> When encounter pte is a swap entry, the current code handles two cases:
> migration and normal swapentry, but we have a third case: hwpoison page.
>
> This patch adds hwpoison page handle, consider hwpoison page incore as
> same as migration.
>
> Signed-off-by: Weijie Yang <[email protected]>
The change makes sense:
Acked-by: Johannes Weiner <[email protected]>
But please add a description of what happens when a poison entry is
encountered with the current code. I'm guessing swap_address_space()
will return garbage and this might crash the kernel?
On Wed, Nov 12, 2014 at 09:20:22AM -0500, Johannes Weiner wrote:
> On Wed, Nov 12, 2014 at 11:39:29AM +0800, Weijie Yang wrote:
> > When encounter pte is a swap entry, the current code handles two cases:
> > migration and normal swapentry, but we have a third case: hwpoison page.
> >
> > This patch adds hwpoison page handle, consider hwpoison page incore as
> > same as migration.
> >
> > Signed-off-by: Weijie Yang <[email protected]>
Acked-by: Naoya Horiguchi <[email protected]>
>
> The change makes sense:
>
> Acked-by: Johannes Weiner <[email protected]>
>
> But please add a description of what happens when a poison entry is
> encountered with the current code. I'm guessing swap_address_space()
> will return garbage and this might crash the kernel?
Yes, I think that's correct.
Thanks,
Naoya Horiguchi-