Skip to content

Commit

Permalink
target/xtensa: add FIXME for translation memory leak
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
stsquad committed Apr 7, 2020
1 parent b859040 commit 1f089c6
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions target/xtensa/translate.c
Expand Up @@ -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);
Expand Down

0 comments on commit 1f089c6

Please sign in to comment.