coredump: add DAX filtering for FDPIC ELF coredumps
authorRoss Zwisler <ross.zwisler@linux.intel.com>
Mon, 5 Oct 2015 22:33:37 +0000 (16:33 -0600)
committerDan Williams <dan.j.williams@intel.com>
Mon, 9 Nov 2015 18:29:54 +0000 (13:29 -0500)
Add explicit filtering for DAX mappings to FDPIC ELF coredump.  This is
useful because DAX mappings have the potential to be very large.

This patch has only been compile tested.

Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Acked-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
fs/binfmt_elf_fdpic.c

index d3634bfb7fe187b4de899e809188319c08b6ac23..863250157aa753a0bfdf16f8b1299247bae657fe 100644 (file)
@@ -35,6 +35,7 @@
 #include <linux/elf-fdpic.h>
 #include <linux/elfcore.h>
 #include <linux/coredump.h>
+#include <linux/dax.h>
 
 #include <asm/uaccess.h>
 #include <asm/param.h>
@@ -1206,6 +1207,20 @@ static int maydump(struct vm_area_struct *vma, unsigned long mm_flags)
                return 0;
        }
 
+       /* support for DAX */
+       if (vma_is_dax(vma)) {
+               if (vma->vm_flags & VM_SHARED) {
+                       dump_ok = test_bit(MMF_DUMP_DAX_SHARED, &mm_flags);
+                       kdcore("%08lx: %08lx: %s (DAX shared)", vma->vm_start,
+                              vma->vm_flags, dump_ok ? "yes" : "no");
+               } else {
+                       dump_ok = test_bit(MMF_DUMP_DAX_PRIVATE, &mm_flags);
+                       kdcore("%08lx: %08lx: %s (DAX private)", vma->vm_start,
+                              vma->vm_flags, dump_ok ? "yes" : "no");
+               }
+               return dump_ok;
+       }
+
        /* By default, dump shared memory if mapped from an anonymous file. */
        if (vma->vm_flags & VM_SHARED) {
                if (file_inode(vma->vm_file)->i_nlink == 0) {