Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP3:GA
xen.21123
xsa318.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xsa318.patch of Package xen.21123
Subject: gnttab: fix GNTTABOP_copy continuation handling From: Jan Beulich jbeulich@suse.com Tue Apr 14 15:21:36 2020 +0200 Date: Tue Apr 14 15:21:36 2020 +0200: Git: 45c90737d5f0c8bf479adcd8cb88450f1998e55c The XSA-226 fix was flawed - the backwards transformation on rc was done too early, causing a continuation to not get invoked when the need for preemption was determined at the very first iteration of the request. This in particular means that all of the status fields of the individual operations would be left untouched, i.e. set to whatever the caller may or may not have initialized them to. This is part of XSA-318. Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de> Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Juergen Gross <jgross@suse.com> Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de> master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93 master date: 2020-04-14 14:42:32 +0200 diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 3027478e30..90c09974f1 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -3256,8 +3256,7 @@ do_grant_table_op( rc = gnttab_copy(copy, count); if ( rc > 0 ) { - rc = count - rc; - guest_handle_add_offset(copy, rc); + guest_handle_add_offset(copy, count - rc); uop = guest_handle_cast(copy, void); } break; @@ -3323,6 +3322,9 @@ do_grant_table_op( out: if ( rc > 0 || opaque_out != 0 ) { + /* Adjust rc, see gnttab_copy() for why this is needed. */ + if ( cmd == GNTTABOP_copy ) + rc = count - rc; ASSERT(rc < count); ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0); rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor