mips archs: fix runaway execution if start fn passed to clone returns

Call SYS_exit on return from fn in __clone. This is the expected
behavior of this function. Without this the child task will crash on
return from fn, since it will return to nowhere.
This commit is contained in:
Segev Finer 2018-08-15 20:46:18 +03:00 committed by Rich Felker
parent 91e1e29d6d
commit 8b2b61e000
3 changed files with 12 additions and 3 deletions

View File

@ -28,5 +28,8 @@ __clone:
nop
1: lw $25, 0($sp)
lw $4, 4($sp)
jr $25
jalr $25
nop
move $4, $2
li $2, 4001
syscall

View File

@ -26,5 +26,8 @@ __clone:
nop
1: ld $25, 0($sp) # function pointer
ld $4, 8($sp) # argument pointer
jr $25 # call the user's function
jalr $25 # call the user's function
nop
move $4, $2
li $2, 5058
syscall

View File

@ -26,5 +26,8 @@ __clone:
nop
1: lw $25, 0($sp) # function pointer
lw $4, 4($sp) # argument pointer
jr $25 # call the user's function
jalr $25 # call the user's function
nop
move $4, $2
li $2, 6058
syscall