On 08/08/2012 11:10 AM, Suzuki K. Poulose wrote:My bad, was looking at an older version of the function. Also,--- a/kernel/events/uprobes.cShouldn't we check uprobe != NULL before we check the uprobe->flags ?
+++ b/kernel/events/uprobes.c
@@ -1528,17 +1528,15 @@ cleanup_ret:
utask->active_uprobe = NULL;
utask->state = UTASK_RUNNING;
}
- if (uprobe) {
- if (!(uprobe->flags & UPROBE_SKIP_SSTEP))
+ if (!(uprobe->flags & UPROBE_SKIP_SSTEP))
i.e, shouldn't the above line be :
if (uprobe && ! (uprobe->flags & UPROBE_SKIP_SSTEP)) ?
The function starts like this:
if (!uprobe) {
if (is_swbp > 0) {
send_sig(SIGTRAP, current, 0);
} else {
instruction_pointer_set(regs, bp_vaddr);
}
return;
}
Which makes uprobe != NULL by the time we get there, no?