lkml.org 
[lkml]   [2018]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 5/8] trace_uprobe: Support SDT markers having reference count (semaphore)
    From
    Date


    On 03/14/2018 10:29 PM, Oleg Nesterov wrote:
    > On 03/13, Ravi Bangoria wrote:
    >> +static bool sdt_valid_vma(struct trace_uprobe *tu, struct vm_area_struct *vma)
    >> +{
    >> + unsigned long vaddr = vma_offset_to_vaddr(vma, tu->ref_ctr_offset);
    >> +
    >> + return tu->ref_ctr_offset &&
    >> + vma->vm_file &&
    >> + file_inode(vma->vm_file) == tu->inode &&
    >> + vma->vm_flags & VM_WRITE &&
    >> + vma->vm_start <= vaddr &&
    >> + vma->vm_end > vaddr;
    >> +}
    > Perhaps in this case a simple
    >
    > ref_ctr_offset < vma->vm_end - vma->vm_start
    >
    > check without vma_offset_to_vaddr() makes more sense, but I won't insist.
    >

    Hmm... I'm not quite sure. Will rethink and get back to you.

    >
    >> +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();
    >> + info = uprobe_build_map_info(tu->inode->i_mapping,
    >> + tu->ref_ctr_offset, false);
    > Hmm. This doesn't look right.
    >
    > If you need to find all mappings (and avoid the races with fork/dup_mmap) you
    > need to take this semaphore for writing, uprobe_start_dup_mmap() can't help.

    Oops. Yes. Will change it.

    Thanks for the review :)
    Ravi

    \
     
     \ /
      Last update: 2018-03-15 12:21    [W:4.261 / U:0.364 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site