[LTP] [PATCH] sigaltstack01: Fix check about alternative stack
Petr Vorel
pvorel@suse.cz
Tue Aug 19 07:52:21 CEST 2025
Hi Liheng Chen,
> Hi Petr Vorel,
> Recently I want to test if Gramine-SGX (emulates Linux in Intel SGX trusted execution environment) works exactly like Linux, and avoid it from harming users.
> sigaltstack01 mallocs a buffer with size SIGSTKSZ (8192) and uses this buffer as an alternative stack. However, in Gramine-SGX, it needs to reserve a large memory to save xstate, sigframe, and restorer's address, thus it needs to reserve memory larger than 11452 bytes, which overflows SIGSTKSZ. In this situation, I noticed the wrong check we talked about. (Detail: https://github.com/gramineproject/gramine/issues/2153 , is it OK to paste a link?)
Thanks a lot for sharing the details and your patch!
Merged with added additional info from you to the commit message.
Kind regards,
Petr
> Kind regards,
> Liheng Chen
> ------------------ Original ------------------
> Hi Liheng,
> > Hi all,
> > This check seems should be (alt_stk < sigstk.ss_sp) || (alt_stk > (sigstk.ss_sp + SIGSTKSZ)), not &&
> You're right. IMHO the error goes down to the original addition in
> 865695bbc89088b9526ea9045410e5afb70a985c
> Out of curiosity, did you find a system where it should fail but it didn't?
> Reviewed-by: Petr Vorel <pvorel@suse.cz>
> > Kind regards,
> > Liheng Chen
> > Signed-off-by: Liheng Chen <791960492@qq.com>
> > ---
> > testcases/kernel/syscalls/sigaltstack/sigaltstack01.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> > diff --git a/testcases/kernel/syscalls/sigaltstack/sigaltstack01.c b/testcases/kernel/syscalls/sigaltstack/sigaltstack01.c
> > index 9a2e3a440..147659467 100644
> > --- a/testcases/kernel/syscalls/sigaltstack/sigaltstack01.c
> > +++ b/testcases/kernel/syscalls/sigaltstack/sigaltstack01.c
> > @@ -142,7 +142,7 @@ int main(int ac, char **av)
> > * Check that main_stk is outside the
> > * alternate stk boundaries.
> > */
> > - if ((alt_stk < sigstk.ss_sp) &&
> > + if ((alt_stk < sigstk.ss_sp) ||
> > (alt_stk > (sigstk.ss_sp + SIGSTKSZ))) {
> > tst_resm(TFAIL,
> > "alt. stack is not within the "
More information about the ltp
mailing list