On Tue, 13 Mar 2018 18:26:00 +0530
Ravi Bangoria <ravi.bango...@linux.vnet.ibm.com> wrote:

> +static void sdt_increment_ref_ctr(struct trace_uprobe *tu)
> +{
> +     struct uprobe_map_info *info;
> +     struct vm_area_struct *vma;
> +     unsigned long vaddr;
> +
> +     uprobe_start_dup_mmap();

Please add a comment here that this function ups the mm ref count for
each info returned. Otherwise it's hard to know what that mmput() below
matches.

-- Steve

> +     info = uprobe_build_map_info(tu->inode->i_mapping,
> +                             tu->ref_ctr_offset, false);
> +     if (IS_ERR(info))
> +             goto out;
> +
> +     while (info) {
> +             down_write(&info->mm->mmap_sem);
> +
> +             vma = sdt_find_vma(info->mm, tu);
> +             vaddr = vma_offset_to_vaddr(vma, tu->ref_ctr_offset);
> +             sdt_update_ref_ctr(info->mm, vaddr, 1);
> +
> +             up_write(&info->mm->mmap_sem);
> +             mmput(info->mm);
> +             info = uprobe_free_map_info(info);
> +     }
> +
> +out:
> +     uprobe_end_dup_mmap();
> +}
> +

Reply via email to