xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* libxc: correctly unmap pages after core-dumping a pv guest
@ 2011-05-23 11:42 Markus Groß
  2011-05-23 12:24 ` Markus Groß
  2011-05-24 15:07 ` Ian Jackson
  0 siblings, 2 replies; 7+ messages in thread
From: Markus Groß @ 2011-05-23 11:42 UTC (permalink / raw)
  To: xen-devel

Hi,

while implementing core dumping functionality for the libxl driver
of libvirt, I discovered an issue with mapping pages of a pv guest.

After dumping the core of a pv guest the domain was not cleared up
properly and some pages were not unmapped. This issue is similar
to the one reported here:
http://lists.xensource.com/archives/html/xen-devel/2011-05/msg01314.html

In xc_domain_dumpcore_via_callback in the file xc_core.c the function
xc_core_arch_map_p2m is called to map P2M_FL_ENTRIES pages to the variable p2m.
But to unmap the pages later, the dinfo->p2m_size has to be set accordingly.
This was not done, instead a variable named p2m_size was set.
This way P2M_FL_ENTRIES was always zero and the pages were left mapped.

The following patch fixes this.

Best regards,
Markus
 
diff -r 7c7ef1b6f4e5 tools/libxc/xc_core.c
--- a/tools/libxc/xc_core.c     Tue Apr 26 14:11:18 2011 +0100
+++ b/tools/libxc/xc_core.c     Mon May 23 13:36:23 2011 +0200
@@ -468,7 +468,6 @@
 
     int auto_translated_physmap;
     xen_pfn_t *p2m = NULL;
-    unsigned long p2m_size = 0;
     struct xen_dumpcore_p2m *p2m_array = NULL;
 
     uint64_t *pfn_array = NULL;
@@ -569,7 +568,7 @@
         }
 
         sts = xc_core_arch_map_p2m(xch, dinfo->guest_width, &info, live_shinfo,
-                                   &p2m, &p2m_size);
+                                   &p2m, &dinfo->p2m_size);
         if ( sts != 0 )
             goto out;
     }

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: libxc: correctly unmap pages after core-dumping a pv guest
  2011-05-23 11:42 libxc: correctly unmap pages after core-dumping a pv guest Markus Groß
@ 2011-05-23 12:24 ` Markus Groß
  2011-05-23 12:46   ` Ian Campbell
  2011-05-24 15:07 ` Ian Jackson
  1 sibling, 1 reply; 7+ messages in thread
From: Markus Groß @ 2011-05-23 12:24 UTC (permalink / raw)
  To: xen-devel

I forgot to put [PATCH] in the subject, sorry about that.

Am Montag 23 Mai 2011 13:42:28 schrieb Markus Groß:
> Hi,
> 
> while implementing core dumping functionality for the libxl driver
> of libvirt, I discovered an issue with mapping pages of a pv guest.
> 
> After dumping the core of a pv guest the domain was not cleared up
> properly and some pages were not unmapped. This issue is similar
> to the one reported here:
> http://lists.xensource.com/archives/html/xen-devel/2011-05/msg01314.html
> 
> In xc_domain_dumpcore_via_callback in the file xc_core.c the function
> xc_core_arch_map_p2m is called to map P2M_FL_ENTRIES pages to the variable p2m.
> But to unmap the pages later, the dinfo->p2m_size has to be set accordingly.
> This was not done, instead a variable named p2m_size was set.
> This way P2M_FL_ENTRIES was always zero and the pages were left mapped.
> 
> The following patch fixes this.
> 
> Best regards,
> Markus
>  
> diff -r 7c7ef1b6f4e5 tools/libxc/xc_core.c
> --- a/tools/libxc/xc_core.c     Tue Apr 26 14:11:18 2011 +0100
> +++ b/tools/libxc/xc_core.c     Mon May 23 13:36:23 2011 +0200
> @@ -468,7 +468,6 @@
>  
>      int auto_translated_physmap;
>      xen_pfn_t *p2m = NULL;
> -    unsigned long p2m_size = 0;
>      struct xen_dumpcore_p2m *p2m_array = NULL;
>  
>      uint64_t *pfn_array = NULL;
> @@ -569,7 +568,7 @@
>          }
>  
>          sts = xc_core_arch_map_p2m(xch, dinfo->guest_width, &info, live_shinfo,
> -                                   &p2m, &p2m_size);
> +                                   &p2m, &dinfo->p2m_size);
>          if ( sts != 0 )
>              goto out;
>      }
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: libxc: correctly unmap pages after core-dumping a pv guest
  2011-05-23 12:24 ` Markus Groß
@ 2011-05-23 12:46   ` Ian Campbell
  2011-05-23 13:12     ` [PATCH] " Markus Groß
  0 siblings, 1 reply; 7+ messages in thread
From: Ian Campbell @ 2011-05-23 12:46 UTC (permalink / raw)
  To: Markus Groß; +Cc: xen-devel@lists.xensource.com

On Mon, 2011-05-23 at 13:24 +0100, Markus Groß wrote:
> I forgot to put [PATCH] in the subject, sorry about that.

That doesn't matter too much (it just increases the chance of attracting
a maintainers attention). What does matter though is that we need your
Signed-off-by per the DCO, [0]. Please can you resend with that?

Thanks!
Ian.

[0] http://lwn.net/Articles/437739/

> 
> Am Montag 23 Mai 2011 13:42:28 schrieb Markus Groß:
> > Hi,
> > 
> > while implementing core dumping functionality for the libxl driver
> > of libvirt, I discovered an issue with mapping pages of a pv guest.
> > 
> > After dumping the core of a pv guest the domain was not cleared up
> > properly and some pages were not unmapped. This issue is similar
> > to the one reported here:
> > http://lists.xensource.com/archives/html/xen-devel/2011-05/msg01314.html
> > 
> > In xc_domain_dumpcore_via_callback in the file xc_core.c the function
> > xc_core_arch_map_p2m is called to map P2M_FL_ENTRIES pages to the variable p2m.
> > But to unmap the pages later, the dinfo->p2m_size has to be set accordingly.
> > This was not done, instead a variable named p2m_size was set.
> > This way P2M_FL_ENTRIES was always zero and the pages were left mapped.
> > 
> > The following patch fixes this.
> > 
> > Best regards,
> > Markus
> >  
> > diff -r 7c7ef1b6f4e5 tools/libxc/xc_core.c
> > --- a/tools/libxc/xc_core.c     Tue Apr 26 14:11:18 2011 +0100
> > +++ b/tools/libxc/xc_core.c     Mon May 23 13:36:23 2011 +0200
> > @@ -468,7 +468,6 @@
> >  
> >      int auto_translated_physmap;
> >      xen_pfn_t *p2m = NULL;
> > -    unsigned long p2m_size = 0;
> >      struct xen_dumpcore_p2m *p2m_array = NULL;
> >  
> >      uint64_t *pfn_array = NULL;
> > @@ -569,7 +568,7 @@
> >          }
> >  
> >          sts = xc_core_arch_map_p2m(xch, dinfo->guest_width, &info, live_shinfo,
> > -                                   &p2m, &p2m_size);
> > +                                   &p2m, &dinfo->p2m_size);
> >          if ( sts != 0 )
> >              goto out;
> >      }
> > 
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@lists.xensource.com
> > http://lists.xensource.com/xen-devel
> > 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] libxc: correctly unmap pages after core-dumping a pv guest
  2011-05-23 12:46   ` Ian Campbell
@ 2011-05-23 13:12     ` Markus Groß
  0 siblings, 0 replies; 7+ messages in thread
From: Markus Groß @ 2011-05-23 13:12 UTC (permalink / raw)
  To: Ian Campbell; +Cc: xen-devel@lists.xensource.com

Hi,

while implementing core dumping functionality for the libxl driver
of libvirt, I discovered an issue with mapping pages of a pv guest.

After dumping the core of a pv guest the domain was not cleared up
properly and some pages were not unmapped. This issue is similar
to the one reported here:
http://lists.xensource.com/archives/html/xen-devel/2011-05/msg01314.html

In xc_domain_dumpcore_via_callback in the file xc_core.c the function
xc_core_arch_map_p2m is called to map P2M_FL_ENTRIES pages to the  
variable p2m.
But to unmap the pages later, the dinfo->p2m_size has to be set accordingly.
This was not done, instead a variable named p2m_size was set.
This way P2M_FL_ENTRIES was always zero and the pages were left mapped.

The following patch fixes this.

Best regards,
Markus

Signed-off-by: Markus Groß <gross <at> univention.de>

diff -r 7c7ef1b6f4e5 tools/libxc/xc_core.c
--- a/tools/libxc/xc_core.c     Tue Apr 26 14:11:18 2011 +0100
+++ b/tools/libxc/xc_core.c     Mon May 23 13:36:23 2011 +0200
@@ -468,7 +468,6 @@

      int auto_translated_physmap;
      xen_pfn_t *p2m = NULL;
-    unsigned long p2m_size = 0;
      struct xen_dumpcore_p2m *p2m_array = NULL;

      uint64_t *pfn_array = NULL;
@@ -569,7 +568,7 @@
          }

          sts = xc_core_arch_map_p2m(xch, dinfo->guest_width, &info,  
live_shinfo,
-                                   &p2m, &p2m_size);
+                                   &p2m, &dinfo->p2m_size);
          if ( sts != 0 )
              goto out;
      }

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: libxc: correctly unmap pages after core-dumping a pv guest
  2011-05-23 11:42 libxc: correctly unmap pages after core-dumping a pv guest Markus Groß
  2011-05-23 12:24 ` Markus Groß
@ 2011-05-24 15:07 ` Ian Jackson
  2011-05-24 16:22   ` Markus Groß
  1 sibling, 1 reply; 7+ messages in thread
From: Ian Jackson @ 2011-05-24 15:07 UTC (permalink / raw)
  To: Markus Groß; +Cc: xen-devel

Markus Groß writes ("[Xen-devel] libxc: correctly unmap pages after core-dumping a pv guest"):
> But to unmap the pages later, the dinfo->p2m_size has to be set accordingly.
> This was not done, instead a variable named p2m_size was set.
> This way P2M_FL_ENTRIES was always zero and the pages were left mapped.
> 
> The following patch fixes this.

Thanks.  The existing code here is pretty unfortunate.

In xc_domain_dumpcore_via_callback where you make your change, "dinfo"
refers to a struct domain_info_context which is local to that
function.  But in the called function xc_core_arch_map_p2m_rw, "dinfo"
refers to another identical structure allocated locally to the small
wrapper function xc_core_arch_map_p2m.  All rather tangled.

But, anyway, your change is correct so I have applied it.

Next time, though, can you please be sure to add a Signed-off-by line,
to signify your certification in accordance with the Developer's
Certificate of Origin ?  In this case I'll go ahead as it's only a
couple of lines.

Thanks,
Ian.

>From Documentation/SubmittingPatches in the Linux kernel tree:
 
        Developer's Certificate of Origin 1.1
 
        By making a contribution to this project, I certify that:
 
        (a) The contribution was created in whole or in part by me and I
            have the right to submit it under the open source license
            indicated in the file; or
 
        (b) The contribution is based upon previous work that, to the best
            of my knowledge, is covered under an appropriate open source
            license and I have the right under that license to submit that
            work with modifications, whether created in whole or in part
            by me, under the same open source license (unless I am
            permitted to submit under a different license), as indicated
            in the file; or
 
        (c) The contribution was provided directly to me by some other
            person who certified (a), (b) or (c) and I have not modified
            it.
 
        (d) I understand and agree that this project and the contribution
            are public and that a record of the contribution (including all
            personal information I submit with it, including my sign-off) is
            maintained indefinitely and may be redistributed consistent with
            this project or the open source license(s) involved.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: libxc: correctly unmap pages after core-dumping a pv guest
  2011-05-24 15:07 ` Ian Jackson
@ 2011-05-24 16:22   ` Markus Groß
  2011-05-24 17:32     ` Ian Jackson
  0 siblings, 1 reply; 7+ messages in thread
From: Markus Groß @ 2011-05-24 16:22 UTC (permalink / raw)
  To: Ian Jackson; +Cc: xen-devel

Quoting Ian Jackson <Ian.Jackson@eu.citrix.com>:

> Markus Groß writes ("[Xen-devel] libxc: correctly unmap pages after  
> core-dumping a pv guest"):
>> But to unmap the pages later, the dinfo->p2m_size has to be set accordingly.
>> This was not done, instead a variable named p2m_size was set.
>> This way P2M_FL_ENTRIES was always zero and the pages were left mapped.
>>
>> The following patch fixes this.
>
> Thanks.  The existing code here is pretty unfortunate.
>
> In xc_domain_dumpcore_via_callback where you make your change, "dinfo"
> refers to a struct domain_info_context which is local to that
> function.  But in the called function xc_core_arch_map_p2m_rw, "dinfo"
> refers to another identical structure allocated locally to the small
> wrapper function xc_core_arch_map_p2m.  All rather tangled.
>
> But, anyway, your change is correct so I have applied it.
>
> Next time, though, can you please be sure to add a Signed-off-by line,
> to signify your certification in accordance with the Developer's
> Certificate of Origin ?  In this case I'll go ahead as it's only a
> couple of lines.
>
> Thanks,
> Ian.

Thanks, although I did repost the patch with a Signed-off-by line here:
http://lists.xensource.com/archives/html/xen-devel/2011-05/msg01469.html

Cheers,
Markus

>
> From Documentation/SubmittingPatches in the Linux kernel tree:
>
>         Developer's Certificate of Origin 1.1
>
>         By making a contribution to this project, I certify that:
>
>         (a) The contribution was created in whole or in part by me and I
>             have the right to submit it under the open source license
>             indicated in the file; or
>
>         (b) The contribution is based upon previous work that, to the best
>             of my knowledge, is covered under an appropriate open source
>             license and I have the right under that license to submit that
>             work with modifications, whether created in whole or in part
>             by me, under the same open source license (unless I am
>             permitted to submit under a different license), as indicated
>             in the file; or
>
>         (c) The contribution was provided directly to me by some other
>             person who certified (a), (b) or (c) and I have not modified
>             it.
>
>         (d) I understand and agree that this project and the contribution
>             are public and that a record of the contribution (including all
>             personal information I submit with it, including my sign-off) is
>             maintained indefinitely and may be redistributed consistent with
>             this project or the open source license(s) involved.
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: libxc: correctly unmap pages after core-dumping a pv guest
  2011-05-24 16:22   ` Markus Groß
@ 2011-05-24 17:32     ` Ian Jackson
  0 siblings, 0 replies; 7+ messages in thread
From: Ian Jackson @ 2011-05-24 17:32 UTC (permalink / raw)
  To: Markus Groß; +Cc: xen-devel@lists.xensource.com

Markus Groß writes ("Re: [Xen-devel] libxc: correctly unmap pages after core-dumping a pv guest"):
> Thanks, although I did repost the patch with a Signed-off-by line here:
> http://lists.xensource.com/archives/html/xen-devel/2011-05/msg01469.html

Sorry, I must have missed that in my backlog.

Regards,
Ian.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-05-24 17:32 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-23 11:42 libxc: correctly unmap pages after core-dumping a pv guest Markus Groß
2011-05-23 12:24 ` Markus Groß
2011-05-23 12:46   ` Ian Campbell
2011-05-23 13:12     ` [PATCH] " Markus Groß
2011-05-24 15:07 ` Ian Jackson
2011-05-24 16:22   ` Markus Groß
2011-05-24 17:32     ` Ian Jackson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).