On Tue, 24 Nov 2009 19:58:48 +0000
Keir Fraser <keir.fraser@xxxxxxxxxxxxx> wrote:
> On 24/11/2009 19:23, "Mukesh Rathor" <mukesh.rathor@xxxxxxxxxx> wrote:
>
> > Anyways, since 32bit HVM returns 64bit contexts, it appears the way
> > it is, is buggy, since the sizeof(ctxt[0].c) will return 32bit
> > context size in 32 bit libxc. Infact, after making the fix, user is
> > able to get proper core of a Java HVM guest. Can you please quickly
> > explain why you think it's correct in such case?
>
> Ah, maybe you are right after all. But shouldn't you change the last
> two arguments in the call:
> sts = xc_core_shdr_set(shdr, strtab, XEN_DUMPCORE_SEC_PRSTATUS,
> SHT_PROGBITS, offset, filesz,
> __alignof__(ctxt[0].c), sizeof(ctxt[0].c));
> ...to reference *ctxt instead of ctxt[0].c, as well?
>
> If you agree, send an updated patch and I'll apply it.
>
> -- Keir
>
Yup, attached please find updated patch. I had the user test it out
also. Since, ctxt is a union, the penultimate argument should be fine.
thanks,
mukesh
Signed-off-by: Mukesh Rathor <mukesh.rathor@xxxxxxxxxx>
diff -r c8caa281a75a tools/libxc/xc_core.c
--- a/tools/libxc/xc_core.c Mon Nov 23 08:06:54 2009 +0000
+++ b/tools/libxc/xc_core.c Wed Nov 25 11:15:20 2009 -0800
@@ -628,10 +628,10 @@
PERROR("Could not get section header for .xen_prstatus");
goto out;
}
- filesz = sizeof(ctxt[0].c) * nr_vcpus;
+ filesz = sizeof(*ctxt) * nr_vcpus;
sts = xc_core_shdr_set(shdr, strtab, XEN_DUMPCORE_SEC_PRSTATUS,
SHT_PROGBITS, offset, filesz,
- __alignof__(ctxt[0].c), sizeof(ctxt[0].c));
+ __alignof__(ctxt[0].c), sizeof(*ctxt));
if ( sts != 0 )
goto out;
offset += filesz;
@@ -755,7 +755,7 @@
goto out;
/* prstatus: .xen_prstatus */
- sts = dump_rtn(args, (char *)&ctxt[0].c, sizeof(ctxt[0].c) * nr_vcpus);
+ sts = dump_rtn(args, (char *)&ctxt[0].c, sizeof(*ctxt) * nr_vcpus);
if ( sts != 0 )
goto out;
diff.out
Description: Binary data
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|