diff options
Diffstat (limited to 'mm/memory.c')
-rw-r--r-- | mm/memory.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/mm/memory.c b/mm/memory.c index 717aa0e3be2d..ce3c9e4492d8 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -2711,6 +2711,13 @@ void print_vma_addr(char *prefix, unsigned long ip) | |||
2711 | struct mm_struct *mm = current->mm; | 2711 | struct mm_struct *mm = current->mm; |
2712 | struct vm_area_struct *vma; | 2712 | struct vm_area_struct *vma; |
2713 | 2713 | ||
2714 | /* | ||
2715 | * Do not print if we are in atomic | ||
2716 | * contexts (in exception stacks, etc.): | ||
2717 | */ | ||
2718 | if (preempt_count()) | ||
2719 | return; | ||
2720 | |||
2714 | down_read(&mm->mmap_sem); | 2721 | down_read(&mm->mmap_sem); |
2715 | vma = find_vma(mm, ip); | 2722 | vma = find_vma(mm, ip); |
2716 | if (vma && vma->vm_file) { | 2723 | if (vma && vma->vm_file) { |
@@ -2719,7 +2726,7 @@ void print_vma_addr(char *prefix, unsigned long ip) | |||
2719 | if (buf) { | 2726 | if (buf) { |
2720 | char *p, *s; | 2727 | char *p, *s; |
2721 | 2728 | ||
2722 | p = d_path(f->f_dentry, f->f_vfsmnt, buf, PAGE_SIZE); | 2729 | p = d_path(&f->f_path, buf, PAGE_SIZE); |
2723 | if (IS_ERR(p)) | 2730 | if (IS_ERR(p)) |
2724 | p = "?"; | 2731 | p = "?"; |
2725 | s = strrchr(p, '/'); | 2732 | s = strrchr(p, '/'); |