--- linux-2.6.13-rc2-mm1/fs/proc/task_mmu.c	2005-07-12 06:30:05.000000000 +0000
+++ linux-2.6.13-rc2-mm1-pb/fs/proc/task_mmu.c	2005-07-12 07:29:51.000000000 +0000
@@ -121,9 +121,9 @@
 	 * Print the dentry name for named mappings, and a
 	 * special [heap] marker for the heap:
 	 */
-	if (vma->vm_file) {
+	if (file) {
 		pad_len_spaces(m, len);
-		seq_path(m, file->f_vfsmnt, file->f_dentry, "");
+		seq_path(m, file->f_vfsmnt, file->f_dentry, "\n");
 	} else {
 		if (mm) {
 			if (vma->vm_start <= mm->start_brk &&
@@ -245,32 +245,21 @@
 static int show_smap(struct seq_file *m, void *v)
 {
 	struct vm_area_struct *vma = v;
-	struct file *file = vma->vm_file;
-	int flags = vma->vm_flags;
 	struct mm_struct *mm = vma->vm_mm;
 	unsigned long vma_len = (vma->vm_end - vma->vm_start);
 	struct mem_size_stats mss;
 
 	memset(&mss, 0, sizeof mss);
 
+	show_map(m, v);
+
 	if (mm) {
 		spin_lock(&mm->page_table_lock);
 		smaps_pgd_range(vma, vma->vm_start, vma->vm_end, &mss);
 		spin_unlock(&mm->page_table_lock);
 	}
 
-	seq_printf(m, "%08lx-%08lx %c%c%c%c ",
-		   vma->vm_start,
-		   vma->vm_end,
-		   flags & VM_READ ? 'r' : '-',
-		   flags & VM_WRITE ? 'w' : '-',
-		   flags & VM_EXEC ? 'x' : '-',
-		   flags & VM_MAYSHARE ? 's' : 'p');
-
-	if (vma->vm_file)
-		seq_path(m, file->f_vfsmnt, file->f_dentry, " \t\n\\");
-
-	seq_printf(m, "\n"
+	seq_printf(m,
 		   "Size:          %8lu KB\n"
 		   "Rss:           %8lu KB\n"
 		   "Shared_Clean:  %8lu KB\n"
