On 03/15, Oleg Nesterov wrote: > > > +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(). Note to mention that sdt_find_vma() can return NULL but the callers do vma_offset_to_vaddr(vma) without any check. Oleg.