Commit 9789afa8 authored by David Mosberger's avatar David Mosberger Committed by Tony Luck

[IA64] Don't forget to initialize PKStk for kernel-threads

Kernel-threads had both pUStk and pKStk set to FALSE, which was
unintentional.  I don't think the bug has shown any ill effects, but
it's clearly wrong and could come around to bite us later, so let's
fix it now.  Depends on the previous patch to clean up C usage of the
global/root-function predicates.
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent 7e742256
...@@ -40,6 +40,8 @@ ...@@ -40,6 +40,8 @@
#include <asm/unwind.h> #include <asm/unwind.h>
#include <asm/user.h> #include <asm/user.h>
#include "entry.h"
#ifdef CONFIG_PERFMON #ifdef CONFIG_PERFMON
# include <asm/perfmon.h> # include <asm/perfmon.h>
#endif #endif
...@@ -667,7 +669,7 @@ kernel_thread (int (*fn)(void *), void *arg, unsigned long flags) ...@@ -667,7 +669,7 @@ kernel_thread (int (*fn)(void *), void *arg, unsigned long flags)
regs.pt.cr_ifs = 1UL << 63; /* mark as valid, empty frame */ regs.pt.cr_ifs = 1UL << 63; /* mark as valid, empty frame */
regs.sw.ar_fpsr = regs.pt.ar_fpsr = ia64_getreg(_IA64_REG_AR_FPSR); regs.sw.ar_fpsr = regs.pt.ar_fpsr = ia64_getreg(_IA64_REG_AR_FPSR);
regs.sw.ar_bspstore = (unsigned long) current + IA64_RBS_OFFSET; regs.sw.ar_bspstore = (unsigned long) current + IA64_RBS_OFFSET;
regs.sw.pr = (1 << PRED_KERNEL_STACK);
return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs.pt, 0, NULL, NULL); return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs.pt, 0, NULL, NULL);
} }
EXPORT_SYMBOL(kernel_thread); EXPORT_SYMBOL(kernel_thread);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment