If register_uprobe() or register_uretprobe() fails while attempting to register a probe on a process that already has one or more u[ret]probes in place, subsequent uprobes activity on that process (probe hits, register/unregister attempts) may hang. Here's a fix. --- kernel/uprobes.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff -puN kernel/uprobes.c~reused-probe-fix kernel/uprobes.c --- linux-2.6.21-rc6/kernel/uprobes.c~reused-probe-fix 2007-07-06 09:16:49.000000000 -0700 +++ linux-2.6.21-rc6-jimk/kernel/uprobes.c 2007-07-06 09:18:56.000000000 -0700 @@ -830,8 +830,10 @@ fail_uproc: if (uproc_is_new) { uprobe_free_process(uproc); mutex_unlock(&uproc_mutex); - } else + } else { + up_write(&uproc->rwsem); uprobe_put_process(uproc); + } fail_tsk: put_task_struct(p); _