All of lore.kernel.org
 help / color / mirror / Atom feed
* libxc: fix bug of xc_tbuf_get_size()
@ 2010-02-09 10:57 Yu Zhiguo
  2010-02-10  9:17 ` Keir Fraser
  2010-02-12 17:09 ` George Dunlap
  0 siblings, 2 replies; 4+ messages in thread
From: Yu Zhiguo @ 2010-02-09 10:57 UTC (permalink / raw)
  To: Keir Fraser, xen-devel

The size in pages of trace buffer should be t_info->tbuf_size
rather than t_info pages.

Signed-off-by: Yu Zhiguo <yuzg@cn.fujitsu.com>

diff --git a/tools/libxc/xc_tbuf.c b/tools/libxc/xc_tbuf.c
--- a/tools/libxc/xc_tbuf.c
+++ b/tools/libxc/xc_tbuf.c
@@ -15,6 +15,7 @@
  */
 
 #include "xc_private.h"
+#include <xen/trace.h>
 
 static int tbuf_enable(int xc_handle, int enable)
 {
@@ -44,6 +45,7 @@
 
 int xc_tbuf_get_size(int xc_handle, unsigned long *size)
 {
+    struct t_info *t_info;
     int rc;
     DECLARE_SYSCTL;
 
@@ -52,9 +54,19 @@
     sysctl.u.tbuf_op.cmd  = XEN_SYSCTL_TBUFOP_get_info;
 
     rc = xc_sysctl(xc_handle, &sysctl);
-    if (rc == 0)
-        *size = sysctl.u.tbuf_op.size;
-    return rc;
+    if ( rc != 0 )
+        return rc;
+
+    t_info = xc_map_foreign_range(xc_handle, DOMID_XEN,
+                    sysctl.u.tbuf_op.size, PROT_READ | PROT_WRITE,
+                    sysctl.u.tbuf_op.buffer_mfn);
+
+    if ( t_info == NULL || t_info->tbuf_size == 0 )
+        return -1;
+
+    *size = t_info->tbuf_size;
+
+    return 0;
 }
 
 int xc_tbuf_enable(int xc_handle, unsigned long pages, unsigned long *mfn,

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

end of thread, other threads:[~2010-02-12 17:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-09 10:57 libxc: fix bug of xc_tbuf_get_size() Yu Zhiguo
2010-02-10  9:17 ` Keir Fraser
2010-02-10 11:30   ` Yu Zhiguo
2010-02-12 17:09 ` George Dunlap

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.