Files named "foo\nbar" and "foo\\012bar" are both shown as "foo\\012bar" in /proc/PID files, because show_map_vma() and show_numa_map() in fs/proc/task_mmu.c do not include backslash in the escaped set when calling seq_file_path(). Fix this by including backslash in the escaped set.
diff -Nabpur linux-4.6/fs/proc/task_mmu.c linux-new/fs/proc/task_mmu.c --- linux-4.6/fs/proc/task_mmu.c 2016-05-16 01:43:13.000000000 +0300 +++ linux-new/fs/proc/task_mmu.c 2016-05-30 19:55:42.247297498 +0300 @@ -329,7 +329,7 @@ show_map_vma(struct seq_file *m, struct */ if (file) { seq_pad(m, ' '); - seq_file_path(m, file, "\n"); + seq_file_path(m, file, "\n\\"); goto done; } @@ -1647,7 +1647,7 @@ static int show_numa_map(struct seq_file if (file) { seq_puts(m, " file="); - seq_file_path(m, file, "\n\t= "); + seq_file_path(m, file, "\n\t= \\"); } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) { seq_puts(m, " heap"); } else if (is_stack(proc_priv, vma, is_pid)) { Regards, Nominal Animal