Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 450e47da authored by Martin Schwidefsky's avatar Martin Schwidefsky
Browse files

s390/entry: fix svc number for TIF_SYSCALL system call restart



The load of the svc number in the TIF_SYSCALL restart path needs to be
done with an instruction that loads all 64 bits of %r1, 'lh' only loads
32 bits. If the upper half of %r1 is not zero and has the msb set,
entry64.S will try to execute an svc with a really large number.
What will be in the upper half of %r1 depends on the code generated by
gcc for the functions on the do_signal() callchain.

Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent fc7e48aa
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -295,7 +295,7 @@ sysc_sigpending:
	jno	sysc_return
	lmg	%r2,%r7,__PT_R2(%r11)	# load svc arguments
	lghi	%r8,0			# svc 0 returns -ENOSYS
	lh	%r1,__PT_INT_CODE+2(%r11)	# load new svc number
	llgh	%r1,__PT_INT_CODE+2(%r11)	# load new svc number
	cghi	%r1,NR_syscalls
	jnl	sysc_nr_ok		# invalid svc number -> do svc 0
	slag	%r8,%r1,2