From: Keir Fraser Date: Wed, 3 Sep 2008 13:56:08 +0000 (+0100) Subject: x86: Fix interpretation of get_l*e_linear_pagetable(). X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14111^2~49 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=88c6403475bd57a7ea6c1b7ba8ac96d66375e18e;p=xen.git x86: Fix interpretation of get_l*e_linear_pagetable(). Broken by get_page_type() preemption patch (c/s 18412). Signed-off-by: Keir Fraser --- diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index e7fc8f0d94..c5d38b3852 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -762,9 +762,8 @@ get_page_from_l2e( rc = get_page_and_type_from_pagenr( l2e_get_pfn(l2e), PGT_l1_page_table, d, 0); - if ( unlikely(rc) && rc != -EAGAIN && - get_l2_linear_pagetable(l2e, pfn, d) ) - rc = -EINVAL; + if ( unlikely(rc == -EINVAL) && get_l2_linear_pagetable(l2e, pfn, d) ) + rc = 0; return rc; } @@ -788,9 +787,8 @@ get_page_from_l3e( rc = get_page_and_type_from_pagenr( l3e_get_pfn(l3e), PGT_l2_page_table, d, preemptible); - if ( unlikely(rc) && rc != -EAGAIN && rc != -EINTR && - get_l3_linear_pagetable(l3e, pfn, d) ) - rc = -EINVAL; + if ( unlikely(rc == -EINVAL) && get_l3_linear_pagetable(l3e, pfn, d) ) + rc = 0; return rc; } @@ -814,9 +812,8 @@ get_page_from_l4e( rc = get_page_and_type_from_pagenr( l4e_get_pfn(l4e), PGT_l3_page_table, d, preemptible); - if ( unlikely(rc) && rc != -EAGAIN && rc != -EINTR && - get_l4_linear_pagetable(l4e, pfn, d) ) - rc = -EINVAL; + if ( unlikely(rc == -EINVAL) && get_l4_linear_pagetable(l4e, pfn, d) ) + rc = 0; return rc; }