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

Reply via email to