31 lines
922 B
Diff
31 lines
922 B
Diff
|
References: CVE-2013-0154 XSA-37 bnc#797031
|
||
|
|
||
|
# HG changeset patch
|
||
|
# User Jan Beulich <jbeulich@suse.com>
|
||
|
# Date 1357564826 -3600
|
||
|
# Node ID e1facbde56ff4e5e85f9a4935abc99eb24367cd0
|
||
|
# Parent 8e942f2f3b45edc5bb1f7a6e05de288342426f0d
|
||
|
x86: fix assertion in get_page_type()
|
||
|
|
||
|
c/s 22998:e9fab50d7b61 (and immediately following ones) made it
|
||
|
possible that __get_page_type() returns other than -EINVAL, in
|
||
|
particular -EBUSY. Consequently, the assertion in get_page_type()
|
||
|
should check for only the return values we absolutely don't expect to
|
||
|
see there.
|
||
|
|
||
|
This is XSA-37 / CVE-2013-0154.
|
||
|
|
||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||
|
|
||
|
--- a/xen/arch/x86/mm.c
|
||
|
+++ b/xen/arch/x86/mm.c
|
||
|
@@ -2603,7 +2603,7 @@ int get_page_type(struct page_info *page
|
||
|
int rc = __get_page_type(page, type, 0);
|
||
|
if ( likely(rc == 0) )
|
||
|
return 1;
|
||
|
- ASSERT(rc == -EINVAL);
|
||
|
+ ASSERT(rc != -EINTR && rc != -EAGAIN);
|
||
|
return 0;
|
||
|
}
|
||
|
|