diff --git a/arch/arm/src/common/arm_checkstack.c b/arch/arm/src/common/arm_checkstack.c index e32994d6354..4c3400c4e4e 100644 --- a/arch/arm/src/common/arm_checkstack.c +++ b/arch/arm/src/common/arm_checkstack.c @@ -203,19 +203,16 @@ size_t up_check_tcbstack(struct tcb_s *tcb) size_t size; #ifdef CONFIG_ARCH_ADDRENV - bool saved = false; - if (tcb->addrenv_own != NULL) { addrenv_select(tcb->addrenv_own); - saved = true; } #endif size = arm_stack_check(tcb->stack_base_ptr, tcb->adj_stack_size); #ifdef CONFIG_ARCH_ADDRENV - if (saved) + if (tcb->addrenv_own != NULL) { addrenv_restore(); } diff --git a/arch/risc-v/src/common/riscv_checkstack.c b/arch/risc-v/src/common/riscv_checkstack.c index ab704c73e8f..52978896ce7 100644 --- a/arch/risc-v/src/common/riscv_checkstack.c +++ b/arch/risc-v/src/common/riscv_checkstack.c @@ -159,12 +159,9 @@ size_t up_check_tcbstack(struct tcb_s *tcb) size_t size; #ifdef CONFIG_ARCH_ADDRENV - bool saved = false; - if (tcb->addrenv_own != NULL) { addrenv_select(tcb->addrenv_own); - saved = true; } #endif @@ -172,7 +169,7 @@ size_t up_check_tcbstack(struct tcb_s *tcb) tcb->adj_stack_size); #ifdef CONFIG_ARCH_ADDRENV - if (saved) + if (tcb->addrenv_own != NULL) { addrenv_restore(); } diff --git a/binfmt/libnxflat/libnxflat.h b/binfmt/libnxflat/libnxflat.h index 4d14d87b270..fe3a414683e 100644 --- a/binfmt/libnxflat/libnxflat.h +++ b/binfmt/libnxflat/libnxflat.h @@ -79,6 +79,25 @@ int nxflat_addrenv_alloc(FAR struct nxflat_loadinfo_s *loadinfo, # define nxflat_addrenv_select(l) addrenv_select(&(l)->addrenv) #endif +/**************************************************************************** + * Name: nxflat_addrenv_restore + * + * Description: + * Restore the address environment before nxflat_addrenv_select() was + * called.. + * + * Input Parameters: + * loadinfo - Load state information + * + * Returned Value: + * Zero (OK) on success; a negated errno value on failure. + * + ****************************************************************************/ + +#ifdef CONFIG_ARCH_ADDRENV +# define nxflat_addrenv_restore(l) addrenv_restore() +#endif + /**************************************************************************** * Name: nxflat_addrenv_free * diff --git a/sched/group/group_argvstr.c b/sched/group/group_argvstr.c index 6b608575359..8de2aaaf6e5 100644 --- a/sched/group/group_argvstr.c +++ b/sched/group/group_argvstr.c @@ -59,9 +59,6 @@ size_t group_argvstr(FAR struct tcb_s *tcb, FAR char *args, size_t size) { size_t n = 0; -#ifdef CONFIG_ARCH_ADDRENV - bool saved = false; -#endif /* Perform sanity checks */ @@ -77,7 +74,6 @@ size_t group_argvstr(FAR struct tcb_s *tcb, FAR char *args, size_t size) if (tcb->addrenv_own != NULL) { addrenv_select(tcb->addrenv_own); - saved = true; } #endif @@ -100,7 +96,7 @@ size_t group_argvstr(FAR struct tcb_s *tcb, FAR char *args, size_t size) } #ifdef CONFIG_ARCH_ADDRENV - if (saved) + if (tcb->addrenv_own != NULL) { addrenv_restore(); }