default:
MEM_LOG("Invalid extended pt command 0x%x", op.cmd);
+ rc = -ENOSYS;
okay = 0;
break;
}
if ( unlikely(!okay) )
{
- rc = -EINVAL;
+ rc = rc ? rc : -EINVAL;
break;
}
process_deferred_ops();
/* Add incremental work we have done to the @done output parameter. */
- done += i;
if ( unlikely(!guest_handle_is_null(pdone)) )
+ {
+ done += i;
copy_to_guest(pdone, &done, 1);
+ }
UNLOCK_BIGLOCK(d);
return rc;
default:
MEM_LOG("Invalid page update command %x", cmd);
+ rc = -ENOSYS;
+ okay = 0;
break;
}
if ( unlikely(!okay) )
{
- rc = -EINVAL;
+ rc = rc ? rc : -EINVAL;
break;
}
process_deferred_ops();
/* Add incremental work we have done to the @done output parameter. */
- done += i;
if ( unlikely(!guest_handle_is_null(pdone)) )
+ {
+ done += i;
copy_to_guest(pdone, &done, 1);
+ }
UNLOCK_BIGLOCK(d);
return rc;
break;
default:
- ret = -EINVAL;
+ ret = -ENOSYS;
break;
}
switch ( unreg->type )
{
+ case CALLBACKTYPE_event:
+ case CALLBACKTYPE_failsafe:
+#ifdef CONFIG_X86_SUPERVISOR_MODE_KERNEL
+ case CALLBACKTYPE_sysenter:
+#endif
+ ret = -EINVAL;
+ break;
+
case CALLBACKTYPE_nmi:
ret = unregister_guest_nmi_callback();
break;
default:
- ret = -EINVAL;
+ ret = -ENOSYS;
break;
}
break;
default:
- ret = -EINVAL;
+ ret = -ENOSYS;
break;
}
break;
default:
- ret = -EINVAL;
+ ret = -ENOSYS;
break;
}
switch ( unreg->type )
{
+ case CALLBACKTYPE_event:
+ case CALLBACKTYPE_failsafe:
+ case CALLBACKTYPE_syscall:
+ ret = -EINVAL;
+ break;
+
case CALLBACKTYPE_nmi:
ret = unregister_guest_nmi_callback();
break;
default:
- ret = -EINVAL;
+ ret = -ENOSYS;
break;
}
break;
default:
- ret = -EINVAL;
+ ret = -ENOSYS;
break;
}