summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2009-08-23 18:18:21 -0400
committerFrank Ch. Eigler <fche@elastic.org>2009-08-23 18:18:21 -0400
commitf098eb6d221b4b0ae8451cdbe0286c626ab6ee62 (patch)
treee08522e8361a5ab88d1050a86f7a2711da93eb80
parent55d8c5d4673f74a3ec2865593524d5f40dfcac0c (diff)
downloadsystemtap-steved-f098eb6d221b4b0ae8451cdbe0286c626ab6ee62.tar.gz
systemtap-steved-f098eb6d221b4b0ae8451cdbe0286c626ab6ee62.tar.xz
systemtap-steved-f098eb6d221b4b0ae8451cdbe0286c626ab6ee62.zip
PR10551: build compatibility for pax/grsecurity include/linux/module.h
This patch adapts to patches such as: diff -urNp linux-2.6.29.6/include/linux/module.h linux-2.6.29.6/include/linux/module.h --- linux-2.6.29.6/include/linux/module.h 2009-07-02 19:41:20.000000000 -0400 +++ linux-2.6.29.6/include/linux/module.h 2009-07-30 17:59:26.175602427 -0400 @@ -278,16 +278,16 @@ struct module int (*init)(void); /* If this is non-NULL, vfree after init() returns */ - void *module_init; + void *module_init_rx, *module_init_rw; /* Here is the actual code + data, vfree'd on unload. */ - void *module_core; + void *module_core_rx, *module_core_rw; /* Here are the sizes of the init and core sections */ - unsigned int init_size, core_size; + unsigned int init_size_rw, core_size_rw; /* The size of the executable code in each section. */ - unsigned int init_text_size, core_text_size; + unsigned int init_size_rx, core_size_rx; * runtime/autoconf-grsecurity.c: New test. * buildrun.cxx: Try it. * runtime/print.c: Use it.
-rw-r--r--buildrun.cxx1
-rw-r--r--runtime/autoconf-grsecurity.c11
-rw-r--r--runtime/print.c30
3 files changed, 29 insertions, 13 deletions
diff --git a/buildrun.cxx b/buildrun.cxx
index 796663e0..1820002d 100644
--- a/buildrun.cxx
+++ b/buildrun.cxx
@@ -154,6 +154,7 @@ compile_pass (systemtap_session& s)
output_autoconf(s, o, "autoconf-procfs-owner.c", "STAPCONF_PROCFS_OWNER", NULL);
output_autoconf(s, o, "autoconf-alloc-percpu-align.c", "STAPCONF_ALLOC_PERCPU_ALIGN", NULL);
output_autoconf(s, o, "autoconf-x86-gs.c", "STAPCONF_X86_GS", NULL);
+ output_autoconf(s, o, "autoconf-grsecurity.c", "STAPCONF_GRSECURITY", NULL);
#if 0
/* NB: For now, the performance hit of probe_kernel_read/write (vs. our
diff --git a/runtime/autoconf-grsecurity.c b/runtime/autoconf-grsecurity.c
new file mode 100644
index 00000000..ee2e4e55
--- /dev/null
+++ b/runtime/autoconf-grsecurity.c
@@ -0,0 +1,11 @@
+/* PR10551: pax/grsecurity changes linux/module.h */
+
+#include <linux/module.h>
+
+struct module *t;
+unsigned size;
+
+void foo (void)
+{
+ size += t->init_size_rw + t->init_size_rx + t->core_size_rw + t->core_size_rx;
+}
diff --git a/runtime/print.c b/runtime/print.c
index 69e04073..b11e659b 100644
--- a/runtime/print.c
+++ b/runtime/print.c
@@ -216,28 +216,32 @@ static void _stp_print_char (const char c)
static void _stp_print_kernel_info(char *vstr, int ctx, int num_probes)
{
+ printk(KERN_DEBUG
+ "%s: systemtap: %s, base: %p, memory: %lu+%lu+%u+%u"
#ifdef DEBUG_MEM
- printk(KERN_DEBUG "%s: systemtap: %s, base: %p, memory: %lu+%lu+%u+%u+%u data+text+ctx+net+alloc, probes: %d\n",
+ "+%u"
+#endif
+ " data+text+ctx+net"
+#ifdef DEBUG_MEM
+ "+alloc"
+#endif
+ ", probes: %d\n",
THIS_MODULE->name,
vstr,
- THIS_MODULE->module_core,
+ THIS_MODULE->module_core,
+#ifndef STAPCONF_GRSECURITY
(unsigned long) (THIS_MODULE->core_size - THIS_MODULE->core_text_size),
(unsigned long) THIS_MODULE->core_text_size,
- ctx,
- _stp_allocated_net_memory,
- _stp_allocated_memory - _stp_allocated_net_memory,
- num_probes);
#else
- printk(KERN_DEBUG "%s: systemtap: %s, base: %p, memory: %lu+%lu+%u+%u data+text+ctx+net, probes: %d\n",
- THIS_MODULE->name,
- vstr,
- THIS_MODULE->module_core,
- (unsigned long) (THIS_MODULE->core_size - THIS_MODULE->core_text_size),
- (unsigned long) THIS_MODULE->core_text_size,
+ (unsigned long) (THIS_MODULE->core_size_rw - THIS_MODULE->core_size_rx),
+ (unsigned long) THIS_MODULE->core_size_rx,
+#endif
ctx,
_stp_allocated_net_memory,
- num_probes);
+#ifdef DEBUG_MEM
+ _stp_allocated_memory - _stp_allocated_net_memory,
#endif
+ num_probes);
}
/** @} */