[PATCH for-5.1] target/hppa: Free some temps in do_sub

Richard Henderson posted 1 patch 5 years, 3 months ago
Test docker-quick@centos7 failed
Test docker-mingw@fedora failed
Test checkpatch passed
Test FreeBSD failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200720174039.517902-1-richard.henderson@linaro.org
Maintainers: Richard Henderson <rth@twiddle.net>
target/hppa/translate.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH for-5.1] target/hppa: Free some temps in do_sub
Posted by Richard Henderson 5 years, 3 months ago
Two temps allocated but not freed.  Do enough subtractions
within a single TB and one can run out of temps entirely.

Cc: qemu-stable@nongnu.org
Buglink: https://bugs.launchpad.net/qemu/+bug/1880287
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/hppa/translate.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/target/hppa/translate.c b/target/hppa/translate.c
index 52d7bea1ea..4bd22d4820 100644
--- a/target/hppa/translate.c
+++ b/target/hppa/translate.c
@@ -1294,6 +1294,8 @@ static void do_sub(DisasContext *ctx, unsigned rt, TCGv_reg in1,
     save_or_nullify(ctx, cpu_psw_cb_msb, cb_msb);
     save_gpr(ctx, rt, dest);
     tcg_temp_free(dest);
+    tcg_temp_free(cb);
+    tcg_temp_free(cb_msb);
 
     /* Install the new nullification.  */
     cond_free(&ctx->null_cond);
-- 
2.25.1


Re: [PATCH for-5.1] target/hppa: Free some temps in do_sub
Posted by Philippe Mathieu-Daudé 5 years, 3 months ago
On 7/20/20 7:40 PM, Richard Henderson wrote:
> Two temps allocated but not freed.  Do enough subtractions
> within a single TB and one can run out of temps entirely.
> 
> Cc: qemu-stable@nongnu.org

Fixes: b2167459ae ("target-hppa: Implement basic arithmetic")

> Buglink: https://bugs.launchpad.net/qemu/+bug/1880287
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  target/hppa/translate.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/target/hppa/translate.c b/target/hppa/translate.c
> index 52d7bea1ea..4bd22d4820 100644
> --- a/target/hppa/translate.c
> +++ b/target/hppa/translate.c
> @@ -1294,6 +1294,8 @@ static void do_sub(DisasContext *ctx, unsigned rt, TCGv_reg in1,
>      save_or_nullify(ctx, cpu_psw_cb_msb, cb_msb);
>      save_gpr(ctx, rt, dest);
>      tcg_temp_free(dest);
> +    tcg_temp_free(cb);
> +    tcg_temp_free(cb_msb);
>  
>      /* Install the new nullification.  */
>      cond_free(&ctx->null_cond);
> 


Re: [PATCH for-5.1] target/hppa: Free some temps in do_sub
Posted by svens@stackframe.org 5 years, 3 months ago
Hi,

On Mon, Jul 20, 2020 at 10:40:39AM -0700, Richard Henderson wrote:
> Two temps allocated but not freed.  Do enough subtractions
> within a single TB and one can run out of temps entirely.
> 
> Cc: qemu-stable@nongnu.org
> Buglink: https://bugs.launchpad.net/qemu/+bug/1880287
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  target/hppa/translate.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/target/hppa/translate.c b/target/hppa/translate.c
> index 52d7bea1ea..4bd22d4820 100644
> --- a/target/hppa/translate.c
> +++ b/target/hppa/translate.c
> @@ -1294,6 +1294,8 @@ static void do_sub(DisasContext *ctx, unsigned rt, TCGv_reg in1,
>      save_or_nullify(ctx, cpu_psw_cb_msb, cb_msb);
>      save_gpr(ctx, rt, dest);
>      tcg_temp_free(dest);
> +    tcg_temp_free(cb);
> +    tcg_temp_free(cb_msb);
>  
>      /* Install the new nullification.  */
>      cond_free(&ctx->null_cond);
> -- 
> 2.25.1
> 

Tested-by: Sven Schnelle <svens@stackframe.org>

Regards
Sven