Commit 4cb0e11b authored by Hidehiro Kawai's avatar Hidehiro Kawai Committed by Linus Torvalds
Browse files

coredump_filter: permit changing of the default filter



Introduce a new kernel parameter `coredump_filter'.  Setting a value to
this parameter causes the default bitmask of coredump_filter to be
changed.

It is useful for users to change coredump_filter settings for the whole
system at boot time.  Without this parameter, users have to change
coredump_filter settings for each /proc/<pid>/ in an initializing script.

Signed-off-by: default avatarHidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
Cc: Roland McGrath <roland@redhat.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9cd4fd10
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -551,6 +551,11 @@ and is between 256 and 4096 characters. It is defined in the file
			not work reliably with all consoles, but is known
			not work reliably with all consoles, but is known
			to work with serial and VGA consoles.
			to work with serial and VGA consoles.


	coredump_filter=
			[KNL] Change the default value for
			/proc/<pid>/coredump_filter.
			See also Documentation/filesystems/proc.txt.

	cpcihp_generic=	[HW,PCI] Generic port I/O CompactPCI driver
	cpcihp_generic=	[HW,PCI] Generic port I/O CompactPCI driver
			Format:
			Format:
			<first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>]
			<first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>]
+13 −2
Original line number Original line Diff line number Diff line
@@ -400,6 +400,18 @@ __cacheline_aligned_in_smp DEFINE_SPINLOCK(mmlist_lock);
#define allocate_mm()	(kmem_cache_alloc(mm_cachep, GFP_KERNEL))
#define allocate_mm()	(kmem_cache_alloc(mm_cachep, GFP_KERNEL))
#define free_mm(mm)	(kmem_cache_free(mm_cachep, (mm)))
#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>
#include <linux/init_task.h>


static struct mm_struct * mm_init(struct mm_struct * mm, struct task_struct *p)
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);
	atomic_set(&mm->mm_count, 1);
	init_rwsem(&mm->mmap_sem);
	init_rwsem(&mm->mmap_sem);
	INIT_LIST_HEAD(&mm->mmlist);
	INIT_LIST_HEAD(&mm->mmlist);
	mm->flags = (current->mm) ? current->mm->flags
	mm->flags = (current->mm) ? current->mm->flags : default_dump_filter;
				  : MMF_DUMP_FILTER_DEFAULT;
	mm->core_state = NULL;
	mm->core_state = NULL;
	mm->nr_ptes = 0;
	mm->nr_ptes = 0;
	set_mm_counter(mm, file_rss, 0);
	set_mm_counter(mm, file_rss, 0);