summaryrefslogtreecommitdiffstats
path: root/tapset/conversions-guru.stp
diff options
context:
space:
mode:
Diffstat (limited to 'tapset/conversions-guru.stp')
-rw-r--r--tapset/conversions-guru.stp18
1 files changed, 18 insertions, 0 deletions
diff --git a/tapset/conversions-guru.stp b/tapset/conversions-guru.stp
index f914bb31..9d662ce3 100644
--- a/tapset/conversions-guru.stp
+++ b/tapset/conversions-guru.stp
@@ -115,3 +115,21 @@ deref_fault: /* branched to from kwrite() */
CONTEXT->last_error = CONTEXT->error_buffer;
}
%}
+
+/**
+ * sfunction set_kernel_pointer - Writes a pointer value to kernel memory.
+ * @addr: The kernel address to write the pointer to.
+ * @val: The pointer which is to be written.
+ *
+ * Description: Writes the pointer value to a given kernel memory address.
+ * Reports an error when writing to the given address fails.
+ */
+function set_kernel_pointer (addr:long, val:long) %{ /* guru */
+ kwrite((void **) (intptr_t) THIS->addr, THIS->val);
+ if (0) {
+deref_fault: /* branched to from kwrite() */
+ snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
+ "kernel pointer copy fault at 0x%p", (void *) (uintptr_t) THIS->addr);
+ CONTEXT->last_error = CONTEXT->error_buffer;
+ }
+%}