On Thu, Jul 03, 2025 at 02:02:43PM +0200, Laura Brehm wrote: > In Commit 1d8db6fd698de1f73b1a7d72aea578fdd18d9a87 ("pidfs, coredump: > add PIDFD_INFO_COREDUMP"), the coredump handling logic puts the pidfs > entry right after `connect`, and states: > > Make sure to only put our reference after connect() took > its own reference keeping the pidfs entry alive ... > > However, `connect` does not seem to take a reference to the pidfs > entry, just the pid struct (please correct me if I'm wrong here). kernel_connect() -> sock->ops->connect::unix_stream_connect() -> prepare_peercred() -> pidfs_register_pid() > Since the expectation is that the coredump server makes a > PIDFD_GET_INFO ioctl to get the coredump info - see Commit > a3b4ca60f93ff3e8b41fffbf63bb02ef3b169c5e ("coredump: add coredump > socket"): > > The pidfd for the crashing task will contain information how the > task coredumps. The PIDFD_GET_INFO ioctl gained a new flag > PIDFD_INFO_COREDUMP which can be used to retreive the coredump > information. > > If the coredump gets a new coredump client connection the kernel > guarantees that PIDFD_INFO_COREDUMP information is available. > > This seems to result in the coredump server racing with the kernel to > get the pidfd before the kernel puts the pidfs entry, and if it loses > it won't be able to retrieve the coredump information. Honestly curious: is that something you actually observed or that you think may happen or that an some coding assistant thinks might happen?