]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
coredump: show supported coredump modes
authorChristian Brauner <brauner@kernel.org>
Fri, 16 May 2025 11:25:33 +0000 (13:25 +0200)
committerChristian Brauner <brauner@kernel.org>
Wed, 21 May 2025 11:59:12 +0000 (13:59 +0200)
Allow userspace to discover what coredump modes are supported.

Link: https://lore.kernel.org/20250516-work-coredump-socket-v8-6-664f3caf2516@kernel.org
Acked-by: Luca Boccassi <luca.boccassi@gmail.com>
Reviewed-by: Jann Horn <jannh@google.com>
Reviewed-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/coredump.c

index b0ee99992ea58c8502cb583b626b6bf96f7d273d..84cddfe6e970e0e24e02dd2a71a8f335ad35a7c4 100644 (file)
@@ -1248,6 +1248,12 @@ static int proc_dostring_coredump(const struct ctl_table *table, int write,
 
 static const unsigned int core_file_note_size_min = CORE_FILE_NOTE_SIZE_DEFAULT;
 static const unsigned int core_file_note_size_max = CORE_FILE_NOTE_SIZE_MAX;
+static char core_modes[] = {
+       "file\npipe"
+#ifdef CONFIG_UNIX
+       "\nsocket"
+#endif
+};
 
 static const struct ctl_table coredump_sysctls[] = {
        {
@@ -1291,6 +1297,13 @@ static const struct ctl_table coredump_sysctls[] = {
                .extra1         = SYSCTL_ZERO,
                .extra2         = SYSCTL_ONE,
        },
+       {
+               .procname       = "core_modes",
+               .data           = core_modes,
+               .maxlen         = sizeof(core_modes) - 1,
+               .mode           = 0444,
+               .proc_handler   = proc_dostring,
+       },
 };
 
 static int __init init_fs_coredump_sysctls(void)