linux-next: build failure after merge of the userns tree

Stephen Rothwell posted 1 patch 4 years, 6 months ago
There is a newer version of this series
drivers/vhost/vhost.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
linux-next: build failure after merge of the userns tree
Posted by Stephen Rothwell 4 years, 6 months ago
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.

From: Stephen Rothwell <sfr@canb.auug.org.au>
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@canb.auug.org.au>
---
 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@canb.auug.org.au>
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@canb.auug.org.au>
---
 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)
 {

-- 
Cheers,
Stephen Rothwell
Re: linux-next: build failure after merge of the userns tree
Posted by Eric W. Biederman 4 years, 6 months ago
Stephen Rothwell <sfr@canb.auug.org.au> 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@canb.auug.org.au>
> 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@canb.auug.org.au>
> ---
>  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@canb.auug.org.au>
> 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@canb.auug.org.au>
> ---
>  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)
>  {