mirror of https://gitee.com/openkylin/linux.git
[S390] Initialize __LC_THREAD_INFO early.
"lockdep: Fix backtraces" reveales a bug in early setup code: when lockdep tries to save a stack backtrace before setup_arch has been called the lowcore pointer for the current thread info pointer isn't initialized yet. However our save stack backtrace code relies on it. If the pointer isn't initialized the saved backtrace will have zero entries. lockdep however relies (correctly) on the fact that that cannot happen. A write access to some random memory region is the result. Fix this by initializing the thread info pointer early. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
50aa98bad0
commit
0c88ee5b75
|
@ -24,6 +24,7 @@ startup_continue:
|
|||
# Setup stack
|
||||
#
|
||||
l %r15,.Linittu-.LPG1(%r13)
|
||||
st %r15,__LC_THREAD_INFO # cache thread info in lowcore
|
||||
mvc __LC_CURRENT(4),__TI_task(%r15)
|
||||
ahi %r15,1<<(PAGE_SHIFT+THREAD_ORDER) # init_task_union+THREAD_SIZE
|
||||
st %r15,__LC_KERNEL_STACK # set end of kernel stack
|
||||
|
|
|
@ -92,6 +92,7 @@ startup_continue:
|
|||
# Setup stack
|
||||
#
|
||||
larl %r15,init_thread_union
|
||||
stg %r15,__LC_THREAD_INFO # cache thread info in lowcore
|
||||
lg %r14,__TI_task(%r15) # cache current in lowcore
|
||||
stg %r14,__LC_CURRENT
|
||||
aghi %r15,1<<(PAGE_SHIFT+THREAD_ORDER) # init_task_union + THREAD_SIZE
|
||||
|
|
Loading…
Reference in New Issue