|
@@ -349,8 +349,20 @@ extern int mutex_spin_on_owner(struct mutex *lock, struct thread_info *owner);
|
|
|
struct nsproxy;
|
|
|
struct user_namespace;
|
|
|
|
|
|
-/* Maximum number of active map areas.. This is a random (large) number */
|
|
|
-#define DEFAULT_MAX_MAP_COUNT 65536
|
|
|
+/*
|
|
|
+ * Default maximum number of active map areas, this limits the number of vmas
|
|
|
+ * per mm struct. Users can overwrite this number by sysctl but there is a
|
|
|
+ * problem.
|
|
|
+ *
|
|
|
+ * When a program's coredump is generated as ELF format, a section is created
|
|
|
+ * per a vma. In ELF, the number of sections is represented in unsigned short.
|
|
|
+ * This means the number of sections should be smaller than 65535 at coredump.
|
|
|
+ * Because the kernel adds some informative sections to a image of program at
|
|
|
+ * generating coredump, we need some margin. The number of extra sections is
|
|
|
+ * 1-3 now and depends on arch. We use "5" as safe margin, here.
|
|
|
+ */
|
|
|
+#define MAPCOUNT_ELF_CORE_MARGIN (5)
|
|
|
+#define DEFAULT_MAX_MAP_COUNT (USHORT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
|
|
|
|
|
|
extern int sysctl_max_map_count;
|
|
|
|