summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
authorStan Cox <scox@redhat.com>2010-01-13 22:26:10 -0500
committerStan Cox <scox@redhat.com>2010-01-13 22:26:10 -0500
commit3c5b8e2b99a772e3d19d6c4bf26b3a06037523a4 (patch)
treee932e1891b79c1f2046803230ed34663ead3bb74 /tapsets.cxx
parent4732f8a465430d9c3775f83ec8d11028ebd3eddd (diff)
downloadsystemtap-steved-3c5b8e2b99a772e3d19d6c4bf26b3a06037523a4.tar.gz
systemtap-steved-3c5b8e2b99a772e3d19d6c4bf26b3a06037523a4.tar.xz
systemtap-steved-3c5b8e2b99a772e3d19d6c4bf26b3a06037523a4.zip
Use __access_process_vm_noflush for static user semaphore decrement.
* access_process_vm (__access_process_vm_noflush): New * tapsets.cxx (uprobe_derived_probe_group::emit_module_exit): Use it. * translate.cxx (translate_pass): Declare it.
Diffstat (limited to 'tapsets.cxx')
-rw-r--r--tapsets.cxx4
1 files changed, 2 insertions, 2 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index 4b6305b2..83c626df 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -5146,12 +5146,12 @@ uprobe_derived_probe_group::emit_module_exit (systemtap_session& s)
s.op->newline() << "#endif /* 2.6.31 */";
s.op->newline() << "if (tsk) {"; // just in case the thing exited while we weren't watching
- s.op->newline(1) << "if (get_user (sdt_semaphore, (unsigned short __user*) sup->sdt_sem_address) == 0) {";
+ s.op->newline(1) << "if (__access_process_vm_noflush(tsk, sup->sdt_sem_address, &sdt_semaphore, sizeof(sdt_semaphore), 0)) {";
s.op->newline(1) << "sdt_semaphore --;";
s.op->newline() << "#ifdef DEBUG_UPROBES";
s.op->newline() << "_stp_dbug (__FUNCTION__,__LINE__, \"-semaphore %#x @ %#lx\\n\", sdt_semaphore, sup->sdt_sem_address);";
s.op->newline() << "#endif";
- s.op->newline() << "put_user (sdt_semaphore, (unsigned short __user*) sup->sdt_sem_address);";
+ s.op->newline() << "__access_process_vm_noflush(tsk, sup->sdt_sem_address, &sdt_semaphore, sizeof(sdt_semaphore), 1);";
s.op->newline(-1) << "}";
// XXX: need to analyze possibility of race condition
s.op->newline(-1) << "}";