target/xtensa: add FIXME for translation memory leak
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>
This commit is contained in:
parent
b859040dc4
commit
1f089c6705
@ -1174,6 +1174,11 @@ static void xtensa_tr_init_disas_context(DisasContextBase *dcbase,
|
|||||||
dc->callinc = ((tb_flags & XTENSA_TBFLAG_CALLINC_MASK) >>
|
dc->callinc = ((tb_flags & XTENSA_TBFLAG_CALLINC_MASK) >>
|
||||||
XTENSA_TBFLAG_CALLINC_SHIFT);
|
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) {
|
if (dc->config->isa) {
|
||||||
dc->insnbuf = xtensa_insnbuf_alloc(dc->config->isa);
|
dc->insnbuf = xtensa_insnbuf_alloc(dc->config->isa);
|
||||||
dc->slotbuf = xtensa_insnbuf_alloc(dc->config->isa);
|
dc->slotbuf = xtensa_insnbuf_alloc(dc->config->isa);
|
||||||
|
Loading…
Reference in New Issue
Block a user