The conversion to __get_guest() failed to account for the fact that for
remote vCPU-s dumping gets done through a pointer obtained from
map_domain_page(): __get_guest() arranges for (apparent) accesses to
hypervisor space to cause #GP(0).
Fixes: 6a1d72d3739e ('x86: split __{get,put}_user() into "guest" and "unsafe" variants')
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
{
if ( (((long)stack - 1) ^ ((long)(stack + 1) - 1)) & mask )
break;
- if ( __get_guest(addr, stack) )
+ if ( stack_page )
+ addr = *stack;
+ else if ( __get_guest(addr, stack) )
{
if ( i != 0 )
printk("\n ");
{
if ( (((long)stack - 1) ^ ((long)(stack + 1) - 1)) & mask )
break;
- if ( __get_guest(addr, stack) )
+ if ( stack_page )
+ addr = *stack;
+ else if ( __get_guest(addr, stack) )
{
if ( i != 0 )
printk("\n ");