On 23/01/19 18:50, Konrad Rzeszutek Wilk wrote: >> + if (dirty) >> + kvm_release_pfn_dirty(map->pfn); >> + else >> + kvm_release_pfn_clean(map->pfn); >> + map->hva = NULL; > I keep on having this gnawing feeling that we MUST set map->page to > NULL. > > That is I can see how it is not needed if you are using 'map' and > 'unmap' together - for that we are good. But what I am worried is that > some one unmaps it .. and instead of checking map->hva they end up > checking map->page and think the page is mapped. I think that would break anyway the memremap case. So I think we should indeed reset map->page, but we should set it to a poison value: #define KVM_UNMAPPED_PAGE ((void *) 0x500 + POISON_POINTER_DELTA) mem->page = KVM_UNMAPPED_PAGE; This should make it clear to everyone that checking map->page is _not_ the right thing to do in any case. Paolo > Would you be OK adding that extra statement just as a fail-safe > mechanism in case someones misues the APIs?