Re: [PATCH RFC v3 04/10] coredump: add coredump socket
From: Christian Brauner <brauner@kernel.org>
Date: 2025-05-06 08:24:19
Also in:
linux-fsdevel, lkml
From: Christian Brauner <brauner@kernel.org>
Date: 2025-05-06 08:24:19
Also in:
linux-fsdevel, lkml
On Mon, May 05, 2025 at 11:48:43AM -0700, Kuniyuki Iwashima wrote:
From: Christian Brauner <brauner@kernel.org> Date: Mon, 05 May 2025 13:13:42 +0200quoted
@@ -801,6 +846,40 @@ void do_coredump(const kernel_siginfo_t *siginfo) } break; } + case COREDUMP_SOCK: { + struct file *file __free(fput) = NULL; +#ifdef CONFIG_UNIX + struct socket *socket; + + /* + * It is possible that the userspace process which is + * supposed to handle the coredump and is listening on + * the AF_UNIX socket coredumps. Userspace should just + * mark itself non dumpable. + */ + + retval = sock_create_kern(&init_net, AF_UNIX, SOCK_STREAM, 0, &socket); + if (retval < 0) + goto close_fail; + + file = sock_alloc_file(socket, 0, NULL); + if (IS_ERR(file)) { + sock_release(socket); + retval = PTR_ERR(file); + goto close_fail; + } + + retval = kernel_connect(socket, + (struct sockaddr *)(&coredump_unix_socket), + COREDUMP_UNIX_SOCKET_ADDR_SIZE, 0);This blocks forever if the listener's accept() queue is full. I think we don't want that and should pass O_NONBLOCK. To keep the queue clean is userspace responsibility, and we don't need to care about a weird user.
That seems fine to me. I've changed that.