summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2009-02-05 13:45:26 -0500
committerFrank Ch. Eigler <fche@elastic.org>2009-02-05 13:47:07 -0500
commit482472c332a2a8a9df203bb6fb8f3f6ed87a9cf4 (patch)
tree26d3fbaa3a0d9bc7d3b4b6964327d8c53e6d9c4d
parent4b7b5c032203bec067abc74800cdd0a444395574 (diff)
downloadsystemtap-steved-482472c332a2a8a9df203bb6fb8f3f6ed87a9cf4.tar.gz
systemtap-steved-482472c332a2a8a9df203bb6fb8f3f6ed87a9cf4.tar.xz
systemtap-steved-482472c332a2a8a9df203bb6fb8f3f6ed87a9cf4.zip
PR9740/9816? - workaround for kernel valloc bug
-rw-r--r--ChangeLog5
-rw-r--r--buildrun.cxx1
-rw-r--r--runtime/ChangeLog5
-rw-r--r--runtime/autoconf-vm-area.c9
-rw-r--r--runtime/transport/ChangeLog7
-rw-r--r--runtime/transport/transport.c9
6 files changed, 36 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 8258c422..77d0bcac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-05 Frank Ch. Eigler <fche@elastic.org>
+
+ PR9740/9816?
+ * buildrun.cxx: Add STAPCONF_VM_AREA autoconf test.
+
2009-02-04 Mark Wielaard <mjw@redhat.com>
* NEWS: process().mark(), sys/sdt.h and dtrace compatibility script.
diff --git a/buildrun.cxx b/buildrun.cxx
index 6ce56a09..15ba3ae1 100644
--- a/buildrun.cxx
+++ b/buildrun.cxx
@@ -121,6 +121,7 @@ compile_pass (systemtap_session& s)
o << module_cflags << " += $(call stap_check_build, $(SYSTEMTAP_RUNTIME)/autoconf-dpath-path.c, -DSTAPCONF_DPATH_PATH,)" << endl;
o << module_cflags << " += $(call stap_check_build, $(SYSTEMTAP_RUNTIME)/autoconf-synchronize-sched.c, -DSTAPCONF_SYNCHRONIZE_SCHED,)" << endl;
o << module_cflags << " += $(call stap_check_build, $(SYSTEMTAP_RUNTIME)/autoconf-task-uid.c, -DSTAPCONF_TASK_UID,)" << endl;
+ o << module_cflags << " += $(call stap_check_build, $(SYSTEMTAP_RUNTIME)/autoconf-vm-area.c, -DSTAPCONF_VM_AREA,)" << endl;
#if 0
/* NB: For now, the performance hit of probe_kernel_read/write (vs. our
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index 1c8f33b4..81a78c4b 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-05 Frank Ch. Eigler <fche@elastic.org>
+
+ PR 9740/9816?
+ * autoconf-vm-area.c: New test.
+
2009-02-02 Mark Wielaard <mjw@redhat.com>
* sdt.h: Add STAP_PROBE7, 8 and 9 variants.
diff --git a/runtime/autoconf-vm-area.c b/runtime/autoconf-vm-area.c
new file mode 100644
index 00000000..920d103d
--- /dev/null
+++ b/runtime/autoconf-vm-area.c
@@ -0,0 +1,9 @@
+#include <linux/vmalloc.h>
+#include <asm/page.h>
+
+void foo (void)
+{
+ void *dummy;
+ dummy = alloc_vm_area (PAGE_SIZE);
+ free_vm_area (dummy);
+}
diff --git a/runtime/transport/ChangeLog b/runtime/transport/ChangeLog
index e8e2a047..02f9f119 100644
--- a/runtime/transport/ChangeLog
+++ b/runtime/transport/ChangeLog
@@ -1,3 +1,10 @@
+2009-02-05 Frank Ch. Eigler <fche@elastic.org>
+
+ PR9740/9816?
+ * transport.c (_stp_handle_start): Run alloc/free_vm_area() dummy
+ calls as workaround for kernel valloc/vfree bug. Suggested by
+ Masami Hiramat <mhiramat@redhat.com>.
+
2009-01-06 Frank Ch. Eigler <fche@elastic.org>
PR9699.
diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c
index a572ef9c..97fbf860 100644
--- a/runtime/transport/transport.c
+++ b/runtime/transport/transport.c
@@ -64,6 +64,15 @@ static struct workqueue_struct *_stp_wq;
static void _stp_handle_start(struct _stp_msg_start *st)
{
dbug_trans(1, "stp_handle_start\n");
+
+#ifdef STAPCONF_VM_AREA
+ { /* PR9740: workaround for kernel valloc bug. */
+ void *dummy;
+ dummy = alloc_vm_area (PAGE_SIZE);
+ free_vm_area (dummy);
+ }
+#endif
+
_stp_target = st->target;
st->res = probe_start();
if (st->res >= 0)