Re: [PATCH RFC] mm: migrate: don't rely on PageMovable() of newpage after unlocking it

From: Michal Hocko
Date: Mon Jan 28 2019 - 08:07:14 EST


On Mon 28-01-19 13:16:09, David Hildenbrand wrote:
[...]
> My theory:
>
> In __unmap_and_move(), we lock the old and newpage and perform the
> migration. In case of vitio-balloon, the new page will become
> movable, the old page will no longer be movable.
>
> However, after unlocking newpage, I think there is nothing stopping
> the newpage from getting dequeued and freed by virtio-balloon. This
> will result in the newpage
> 1. No longer having PageMovable()
> 2. Getting moved to the local list before finally freeing it (using
> page->lru)

Does that mean that the virtio-balloon can change the Movable state
while there are other users of the page? Can you point to the code that
does it? How come this can be safe at all? Or is the PageMovable stable
only under the page lock?

--
Michal Hocko
SUSE Labs