mirror of https://gitee.com/openkylin/linux.git
xen/gnttab: leave lazy MMU mode in the case of a m2p override failure
Commit f62805f1
introduced a bug where lazy MMU mode isn't exited if a
m2p_add/remove_override call fails.
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
Reviewed-by: Anthony Liguori <aliguori@amazon.com>
Cc: xen-devel@lists.xenproject.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Matt Wilson <msw@amazon.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: stable@vger.kernel.org
This commit is contained in:
parent
f9c7ec1649
commit
14883a75ec
|
@ -930,9 +930,10 @@ int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops,
|
||||||
ret = m2p_add_override(mfn, pages[i], kmap_ops ?
|
ret = m2p_add_override(mfn, pages[i], kmap_ops ?
|
||||||
&kmap_ops[i] : NULL);
|
&kmap_ops[i] : NULL);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
if (lazy)
|
if (lazy)
|
||||||
arch_leave_lazy_mmu_mode();
|
arch_leave_lazy_mmu_mode();
|
||||||
|
|
||||||
|
@ -969,9 +970,10 @@ int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops,
|
||||||
ret = m2p_remove_override(pages[i], kmap_ops ?
|
ret = m2p_remove_override(pages[i], kmap_ops ?
|
||||||
&kmap_ops[i] : NULL);
|
&kmap_ops[i] : NULL);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
if (lazy)
|
if (lazy)
|
||||||
arch_leave_lazy_mmu_mode();
|
arch_leave_lazy_mmu_mode();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue