accel/tcg: Clear tcg_ctx->gen_tb on buffer overflow
authorRichard Henderson <richard.henderson@linaro.org>
Wed, 26 Jul 2023 19:58:08 +0000 (12:58 -0700)
committerRichard Henderson <richard.henderson@linaro.org>
Mon, 31 Jul 2023 19:19:13 +0000 (12:19 -0700)
commitad17868eb162a5466d8ad43e5ccb428776403308
tree0aa1f1fb3bfcdf628be51dc978fc2cf00ed69842
parent79e29851bf57741252a20838cdc59074ab5bac29
accel/tcg: Clear tcg_ctx->gen_tb on buffer overflow

On overflow of code_gen_buffer, we unlock the guest pages we had been
translating, but failed to clear gen_tb.  On restart, if we cannot
allocate a TB, we exit to the main loop to perform the flush of all
TBs as soon as possible.  With garbage in gen_tb, we hit an assert:

../src/accel/tcg/tb-maint.c:348:page_unlock__debug: \
    assertion failed: (page_is_locked(pd))

Fixes: deba78709ae8 ("accel/tcg: Always lock pages before translation")
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
accel/tcg/translate-all.c