On 03/13, Ravi Bangoria wrote: > > @@ -1053,6 +1056,9 @@ int uprobe_mmap(struct vm_area_struct *vma) > struct uprobe *uprobe, *u; > struct inode *inode; > > + if (uprobe_mmap_callback) > + uprobe_mmap_callback(vma); > + > if (no_uprobe_events() || !valid_vma(vma, true)) > return 0; probe_event_enable() does uprobe_register(); /* WINDOW */ sdt_increment_ref_ctr(); what if uprobe_mmap() is called in between? The counter(s) in this vma will be incremented twice, no? > +static struct vm_area_struct * > +sdt_find_vma(struct mm_struct *mm, struct trace_uprobe *tu) > +{ > + struct vm_area_struct *tmp; > + > + for (tmp = mm->mmap; tmp != NULL; tmp = tmp->vm_next) > + if (sdt_valid_vma(tu, tmp)) > + return tmp; > + > + return NULL; I can't understand the logic... Lets ignore sdt_valid_vma() for now. The caller has uprobe_map_info, why it can't simply do vma = find_vma(uprobe_map_info->vaddr)? and then check sdt_valid_vma(). Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html