summaryrefslogtreecommitdiffstats
path: root/runtime/loc2c-runtime.h
diff options
context:
space:
mode:
authorDave Brolley <brolley@redhat.com>2009-03-16 12:15:51 -0400
committerDave Brolley <brolley@redhat.com>2009-03-16 12:15:51 -0400
commit9b6d8bd0d7a6f80a613b7c609ff1d71ddfed009b (patch)
tree2a84a12198ad719d566dd4bca8494a9824c2a097 /runtime/loc2c-runtime.h
parent24068a1f2e17857f4ce096a17244d09575a199c1 (diff)
parent5d369d06fa39e4769fb3364ba29f588f3d995c24 (diff)
downloadsystemtap-steved-9b6d8bd0d7a6f80a613b7c609ff1d71ddfed009b.tar.gz
systemtap-steved-9b6d8bd0d7a6f80a613b7c609ff1d71ddfed009b.tar.xz
systemtap-steved-9b6d8bd0d7a6f80a613b7c609ff1d71ddfed009b.zip
Merge branch 'master' of git://sources.redhat.com/git/systemtap
Diffstat (limited to 'runtime/loc2c-runtime.h')
-rw-r--r--runtime/loc2c-runtime.h14
1 files changed, 6 insertions, 8 deletions
diff --git a/runtime/loc2c-runtime.h b/runtime/loc2c-runtime.h
index 0af19edc..92c017d3 100644
--- a/runtime/loc2c-runtime.h
+++ b/runtime/loc2c-runtime.h
@@ -187,22 +187,22 @@
#define kread(ptr) ({ \
typeof(*(ptr)) _v; \
- if (probe_kernel_read((void *)&_v, (void *)(ptr), sizeof(*(ptr)))) \
- DEREF_FAULT(ptr); \
+ if (lookup_bad_addr((unsigned long)(ptr)) || \
+ probe_kernel_read((void *)&_v, (void *)(ptr), sizeof(*(ptr)))) \
+ DEREF_FAULT(ptr); \
_v; \
})
#define kwrite(ptr, value) ({ \
typeof(*(ptr)) _v; \
_v = (typeof(*(ptr)))(value); \
- if (probe_kernel_write((void *)(ptr), (void *)&_v, sizeof(*(ptr)))) \
- STORE_DEREF_FAULT(ptr); \
+ if (lookup_bad_addr((unsigned long)addr) || \
+ probe_kernel_write((void *)(ptr), (void *)&_v, sizeof(*(ptr)))) \
+ STORE_DEREF_FAULT(ptr); \
})
#define deref(size, addr) ({ \
intptr_t _i; \
- if (lookup_bad_addr((unsigned long)addr)) \
- __deref_bad(); \
switch (size) { \
case 1: _i = kread((u8 *)(addr)); break; \
case 2: _i = kread((u16 *)(addr)); break; \
@@ -215,8 +215,6 @@
})
#define store_deref(size, addr, value) ({ \
- if (lookup_bad_addr((unsigned long)addr)) \
- __store_deref_bad(); \
switch (size) { \
case 1: kwrite((u8 *)(addr), (value)); break; \
case 2: kwrite((u16 *)(addr), (value)); break; \