diff mbox

Reset runstate_guest handles on soft reset

Message ID 1453973656-17286-1-git-send-email-vkuznets@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Vitaly Kuznetsov Jan. 28, 2016, 9:34 a.m. UTC
runstate_guest handles need to be reset to prevent update_runstate_area()
corrupting guest's memory after we resume the guest.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
 xen/common/domain.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Jan Beulich Jan. 28, 2016, 12:45 p.m. UTC | #1
>>> On 28.01.16 at 10:34, <vkuznets@redhat.com> wrote:
> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -1074,7 +1074,10 @@ int domain_soft_reset(struct domain *d)
>      grant_table_warn_active_grants(d);
>  
>      for_each_vcpu ( d, v )
> +    {
> +        memset(&runstate_guest(v), 0, sizeof(runstate_guest(v)));
>          unmap_vcpu_info(v);
> +    }

Well, the idea seems okay, but using memset() looks bogus: Why
can't you use guest_handle_from_pointer(NULL, ...) or
set_xen_guest_handle(..., NULL)?

Jan
diff mbox

Patch

diff --git a/xen/common/domain.c b/xen/common/domain.c
index 2979c1b..6b2b7dc 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1074,7 +1074,10 @@  int domain_soft_reset(struct domain *d)
     grant_table_warn_active_grants(d);
 
     for_each_vcpu ( d, v )
+    {
+        memset(&runstate_guest(v), 0, sizeof(runstate_guest(v)));
         unmap_vcpu_info(v);
+    }
 
     rc = arch_domain_soft_reset(d);
     if ( !rc )