[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] Argo: don't obtain excess page references
commit cfbcfce494a1c1b1df618e3f06ec5b45352e5fe9 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Wed Mar 6 10:17:36 2024 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed Mar 6 10:17:36 2024 +0100 Argo: don't obtain excess page references find_ring_mfn() already holds a page reference when trying to obtain a writable type reference. We shouldn't make assumptions on the general reference count limit being effectively "infinity". Obtain merely a type ref, re-using the general ref by only dropping the previously acquired one in the case of an error. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Julien Grall <jgrall@xxxxxxxxxx> --- xen/common/argo.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xen/common/argo.c b/xen/common/argo.c index 5dc5e45c7b..da3d3f325f 100644 --- a/xen/common/argo.c +++ b/xen/common/argo.c @@ -1425,7 +1425,7 @@ find_ring_mfn(struct domain *d, gfn_t gfn, mfn_t *mfn) switch ( p2mt ) { case p2m_ram_rw: - if ( !get_page_and_type(page, d, PGT_writable_page) ) + if ( !get_page_type(page, PGT_writable_page) ) ret = -EINVAL; break; @@ -1440,7 +1440,8 @@ find_ring_mfn(struct domain *d, gfn_t gfn, mfn_t *mfn) break; } - put_page(page); + if ( unlikely(ret) ) + put_page(page); return ret; } -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |