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

Commit 166e553a authored by David S. Miller's avatar David S. Miller
Browse files

sparc64: Fix stack debugging IRQ stack regression.



Commit 4f70f7a9
(sparc64: Implement IRQ stacks.) has two bugs.

First, the softirq range check forgets to subtract STACK_BIAS
before comparing with %sp.  Next, on failure the wrong label
is jumped to, resulting in a bogus stack being loaded.

Reported-by: default avatarIgor Kovalenko <igor.v.kovalenko@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4230fa3b
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -64,8 +64,9 @@ mcount:
2:	 sethi		%hi(softirq_stack), %g3
	or		%g3, %lo(softirq_stack), %g3
	ldx		[%g3 + %g1], %g7
	sub		%g7, STACK_BIAS, %g7
	cmp		%sp, %g7
	bleu,pt		%xcc, 2f
	bleu,pt		%xcc, 3f
	 sethi		%hi(THREAD_SIZE), %g3
	add		%g7, %g3, %g7
	cmp		%sp, %g7
@@ -75,7 +76,7 @@ mcount:
	 * again, we are already trying to output the stack overflow
	 * message.
	 */
	sethi		%hi(ovstack), %g7		! cant move to panic stack fast enough
3:	sethi		%hi(ovstack), %g7		! cant move to panic stack fast enough
	 or		%g7, %lo(ovstack), %g7
	add		%g7, OVSTACKSIZE, %g3
	sub		%g3, STACK_BIAS + 192, %g3