if (!mmap_read_trylock(mm))
                return;
 
-       vma = find_vma(mm, ip);
+       vma = vma_lookup(mm, ip);
        if (vma && vma->vm_file) {
                struct file *f = vma->vm_file;
-               char *buf = (char *)__get_free_page(GFP_NOWAIT);
-               if (buf) {
-                       char *p;
-
-                       p = file_path(f, buf, PAGE_SIZE);
-                       if (IS_ERR(p))
-                               p = "?";
-                       printk("%s%s[%lx+%lx]", prefix, kbasename(p),
-                                       vma->vm_start,
-                                       vma->vm_end - vma->vm_start);
-                       free_page((unsigned long)buf);
-               }
+               ip -= vma->vm_start;
+               ip += vma->vm_pgoff << PAGE_SHIFT;
+               printk("%s%pD[%lx,%lx+%lx]", prefix, f, ip,
+                               vma->vm_start,
+                               vma->vm_end - vma->vm_start);
        }
        mmap_read_unlock(mm);
 }