Re: [PATCH 3/6] mm/hmm: fix race between hmm_mirror_unregister() and mmu_notifier callback

From: Andrew Morton
Date: Wed Oct 24 2018 - 19:10:55 EST


On Fri, 19 Oct 2018 12:04:39 -0400 jglisse@xxxxxxxxxx wrote:

> From: Ralph Campbell <rcampbell@xxxxxxxxxx>
>
> In hmm_mirror_unregister(), mm->hmm is set to NULL and then
> mmu_notifier_unregister_no_release() is called. That creates a small
> window where mmu_notifier can call mmu_notifier_ops with mm->hmm equal
> to NULL. Fix this by first unregistering mmu notifier callbacks and
> then setting mm->hmm to NULL.
>
> Similarly in hmm_register(), set mm->hmm before registering mmu_notifier
> callbacks so callback functions always see mm->hmm set.
>
> Signed-off-by: Ralph Campbell <rcampbell@xxxxxxxxxx>
> Reviewed-by: John Hubbard <jhubbard@xxxxxxxxxx>
> Reviewed-by: Jérôme Glisse <jglisse@xxxxxxxxxx>
> Reviewed-by: Balbir Singh <bsingharora@xxxxxxxxx>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx

I added your Signed-off-by: to this one. It's required since you were
on the patch delivery path.