Re: what's parisc execve_wrapper doing in the end?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2012-10-05 at 12:07 +0100, James Bottomley wrote:
> I tried out the code at
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal.git
> experimental-kernel_thread
> 
> and it gives me this panic on boot.

OK, found the fix:  the idle thread is a kernel thread, but it doesn't
come through kernel_thread().  The fix is to check for it (fortunately
it has the signal usp == 0).

I'm now getting as freeing the init memory, which then hangs, so I
suspect some type of execve failure trying to start the initrd... I'm
debugging.

James

---

diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
index a67f122..44e8534 100644
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -254,7 +254,7 @@ copy_thread(unsigned long clone_flags, unsigned long usp,
 	extern void * const hpux_child_return;
 #endif
 
-	if (unlikely(p->flags & PF_KTHREAD)) {
+	if (unlikely((p->flags & PF_KTHREAD) && usp != 0)) {
 		memset(cregs, 0, sizeof(struct pt_regs));
 		/* kernel thread */
 		cregs->ksp = (unsigned long)stack + THREAD_SZ_ALGN;


--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux