summaryrefslogtreecommitdiffstats
path: root/tapset
diff options
context:
space:
mode:
Diffstat (limited to 'tapset')
-rw-r--r--tapset/ChangeLog5
-rw-r--r--tapset/vfs.stp7
2 files changed, 11 insertions, 1 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog
index ea287395..8ab95e7b 100644
--- a/tapset/ChangeLog
+++ b/tapset/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-18 Frank Ch. Eigler <fche@elastic.org>
+
+ * vfs.stp (ppos_pos): Protect contents with deref(), though
+ this blocks operation on i686 due to bug #3079.
+
2006-12-13 Mike Mason <mmlnx@us.ibm.com>
* scheduler.stp: fixed last line in scheduler.ctxswitch to
diff --git a/tapset/vfs.stp b/tapset/vfs.stp
index 16c51b17..b121d5b9 100644
--- a/tapset/vfs.stp
+++ b/tapset/vfs.stp
@@ -37,7 +37,12 @@ function __find_bdevname(dev, bdev)
function ppos_pos:long (ppos:long) %{ /* pure */
loff_t *ppos = (loff_t *)(long)THIS->ppos;
- THIS->__retvalue = (int64_t)*ppos;
+ /* XXX: but see bug #3079 */
+ THIS->__retvalue = (int64_t) deref (sizeof(loff_t), ppos);
+ if (0) {
+deref_fault:
+ CONTEXT->last_error = "pointer dereference fault";
+ }
%}
function __page_ino:long (page:long) %{ /* pure */