mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
KEXEC: fix kexec_get_range_compat to fail vocally.
Fail with -ERANGE rather than silently truncating 64bit values (a physical address and size) into 32bit integers for dom0 to consume. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Simplify the bitwise arithmetic a bit. Signed-off-by: Keir Fraser <keir@xen.org> xen-unstable changeset: 24358:9961a6d5356a xen-unstable date: Mon Dec 05 19:42:46 2011 +0000
This commit is contained in:
1 parent
4b8ccb98a5
commit
f832a2ef4a
1 file changed
+4
@@ -395,6 +395,10 @@ static int kexec_get_range_compat(XEN_GUEST_HANDLE(void) uarg)
|
||||
|
||||
ret = kexec_get_range_internal(&range);
|
||||
|
||||
/* Dont silently truncate physical addresses or sizes. */
|
||||
if ( (range.start | range.size) & ~(unsigned long)(~0u) )
|
||||
return -ERANGE;
|
||||
|
||||
if ( ret == 0 ) {
|
||||
XLAT_kexec_range(&compat_range, &range);
|
||||
if ( unlikely(copy_to_guest(uarg, &compat_range, 1)) )
|
||||
|
||||