]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
target/xtensa: add FIXME for translation memory leak
authorAlex Bennée <alex.bennee@linaro.org>
Fri, 3 Apr 2020 19:11:43 +0000 (20:11 +0100)
committerAlex Bennée <alex.bennee@linaro.org>
Tue, 7 Apr 2020 15:19:49 +0000 (16:19 +0100)
Dynamically allocating a new structure within the DisasContext can
potentially leak as we can longjmp out of the translation loop (see
test_phys_mem). The proper fix would be to use static allocation
within the DisasContext but as the Xtensa translator imports it's code
from elsewhere I leave that as an exercise for the maintainer.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Acked-by: Max Filippov <jcmvbkbc@gmail.com>
Message-Id: <20200403191150.863-6-alex.bennee@linaro.org>

target/xtensa/translate.c

index 8aa972cafdf3664fc647f6876418cbe41de972ef..37f65b1f0305f84e858ad4d1e1232344e87b8f0e 100644 (file)
@@ -1174,6 +1174,11 @@ static void xtensa_tr_init_disas_context(DisasContextBase *dcbase,
     dc->callinc = ((tb_flags & XTENSA_TBFLAG_CALLINC_MASK) >>
                    XTENSA_TBFLAG_CALLINC_SHIFT);
 
+    /*
+     * FIXME: This will leak when a failed instruction load or similar
+     * event causes us to longjump out of the translation loop and
+     * hence not clean-up in xtensa_tr_tb_stop
+     */
     if (dc->config->isa) {
         dc->insnbuf = xtensa_insnbuf_alloc(dc->config->isa);
         dc->slotbuf = xtensa_insnbuf_alloc(dc->config->isa);