On Tue, 2021-08-17 at 12:24 -0600, Jens Axboe wrote: > > And assuming that works, then I suspect this one would fix your issue > even with a piped core dump: > > diff --git a/fs/coredump.c b/fs/coredump.c > index 07afb5ddb1c4..852737a9ccbf 100644 > --- a/fs/coredump.c > +++ b/fs/coredump.c > @@ -41,6 +41,7 @@ > #include <linux/fs.h> > #include <linux/path.h> > #include <linux/timekeeping.h> > +#include <linux/io_uring.h> > > #include <linux/uaccess.h> > #include <asm/mmu_context.h> > @@ -603,6 +604,7 @@ void do_coredump(const kernel_siginfo_t *siginfo) > }; > > audit_core_dumps(siginfo->si_signo); > + io_uring_task_cancel(); > > binfmt = mm->binfmt; > if (!binfmt || !binfmt->core_dump) > That is what my patch is doing. Function call is inserted at a different place... I am not sure if one location is better than the other or if it matters at all but there is an extra change required to make it work... diff --git a/fs/coredump.c b/fs/coredump.c index 07afb5ddb1c4..614fe7a54c1a 100644 --- a/fs/coredump.c +++ b/fs/coredump.c @@ -41,6 +41,7 @@ #include <linux/fs.h> #include <linux/path.h> #include <linux/timekeeping.h> +#include <linux/io_uring.h> #include <linux/uaccess.h> #include <asm/mmu_context.h> @@ -625,6 +626,8 @@ void do_coredump(const kernel_siginfo_t *siginfo) need_suid_safe = true; } + io_uring_task_cancel(); + retval = coredump_wait(siginfo->si_signo, &core_state); if (retval < 0) goto fail_creds;