Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> writes: > Hi all, > > After merging the userns tree, today's linux-next build (powerpc > ppc64_defconfig) failed like this: > > ERROR: modpost: ".do_exit" [drivers/vhost/vhost.ko] undefined! > > Caused by commit > > eb55e716ac1a ("exit: Stop exporting do_exit") > > interacting with commit > > bbf761db7dbb ("vhost: use user_worker to check RLIMITs") > > from the vhost tree. > > I have added the following merge fix patch. Thanks. I will dig in a little more but this is not the correct fix. make_task_dead is for the guts of oops, when the process is borked. I need to track down and see what is going on with the new user_work_create/start thing. This looks like we need a user_work_exit helper that does what these new user work kernel threads need. I will follow up because yikes! At first glance user_helpers look like what kthreads were added to avoid. Getting userspace and kernel space state confused. Eric > From: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > Date: Fri, 17 Dec 2021 18:24:30 +1100 > Subject: [PATCH] fix up for "vhost: use user_worker to check RLIMITs" > > Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > --- > drivers/vhost/vhost.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c > index 8cf259d798c0..b605a79533bb 100644 > --- a/drivers/vhost/vhost.c > +++ b/drivers/vhost/vhost.c > @@ -374,7 +374,7 @@ static int vhost_worker(void *data) > } > > complete(worker->exit_done); > - do_exit(0); > + make_task_dead(0); > } > > static void vhost_vq_free_iovecs(struct vhost_virtqueue *vq) > > This lead to: > > ERROR: modpost: ".make_task_dead" [drivers/vhost/vhost.ko] undefined! > > so I added the following as well. > > From: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > Date: Fri, 17 Dec 2021 18:30:09 +1100 > Subject: [PATCH] fix 2 for "vhost: use user_worker to check RLIMITs" > > Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > --- > kernel/exit.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/kernel/exit.c b/kernel/exit.c > index 6c4b04531f17..dfa3e8f6ffeb 100644 > --- a/kernel/exit.c > +++ b/kernel/exit.c > @@ -890,6 +890,7 @@ void __noreturn make_task_dead(int signr) > > do_exit(signr); > } > +EXPORT_SYMBOL_GPL(make_task_dead); > > SYSCALL_DEFINE1(exit, int, error_code) > {