|
@@ -400,6 +400,18 @@ __cacheline_aligned_in_smp DEFINE_SPINLOCK(mmlist_lock);
|
|
|
#define allocate_mm() (kmem_cache_alloc(mm_cachep, GFP_KERNEL))
|
|
|
#define free_mm(mm) (kmem_cache_free(mm_cachep, (mm)))
|
|
|
|
|
|
+static unsigned long default_dump_filter = MMF_DUMP_FILTER_DEFAULT;
|
|
|
+
|
|
|
+static int __init coredump_filter_setup(char *s)
|
|
|
+{
|
|
|
+ default_dump_filter =
|
|
|
+ (simple_strtoul(s, NULL, 0) << MMF_DUMP_FILTER_SHIFT) &
|
|
|
+ MMF_DUMP_FILTER_MASK;
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+
|
|
|
+__setup("coredump_filter=", coredump_filter_setup);
|
|
|
+
|
|
|
#include <linux/init_task.h>
|
|
|
|
|
|
static struct mm_struct * mm_init(struct mm_struct * mm, struct task_struct *p)
|
|
@@ -408,8 +420,7 @@ static struct mm_struct * mm_init(struct mm_struct * mm, struct task_struct *p)
|
|
|
atomic_set(&mm->mm_count, 1);
|
|
|
init_rwsem(&mm->mmap_sem);
|
|
|
INIT_LIST_HEAD(&mm->mmlist);
|
|
|
- mm->flags = (current->mm) ? current->mm->flags
|
|
|
- : MMF_DUMP_FILTER_DEFAULT;
|
|
|
+ mm->flags = (current->mm) ? current->mm->flags : default_dump_filter;
|
|
|
mm->core_state = NULL;
|
|
|
mm->nr_ptes = 0;
|
|
|
set_mm_counter(mm, file_rss, 0);
|