From: Rob Clark Date: Thu, 29 Dec 2022 19:07:17 +0000 (-0800) Subject: freedreno/decode: Add rnn_reginfo_free() helper X-Git-Tag: upstream/23.3.3~15111 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=59f2748163619b546bd79d8336e89c0254940dee;p=platform%2Fupstream%2Fmesa.git freedreno/decode: Add rnn_reginfo_free() helper Simplify things a bit.. and fix a few places that just leaked the rnndecaddrinfo. Signed-off-by: Rob Clark Part-of: --- diff --git a/src/freedreno/decode/cffdec.c b/src/freedreno/decode/cffdec.c index 05eebf0..a5706f1 100644 --- a/src/freedreno/decode/cffdec.c +++ b/src/freedreno/decode/cffdec.c @@ -859,10 +859,7 @@ dump_register_val(uint32_t regbase, uint32_t dword, int level) printf("%s<%04x>: %08x\n", levels[level], regbase, dword); } - if (info) { - free(info->name); - free(info); - } + rnn_reginfo_free(info); } static void diff --git a/src/freedreno/decode/crashdec-mempool.c b/src/freedreno/decode/crashdec-mempool.c index 98404ff..51f9159 100644 --- a/src/freedreno/decode/crashdec-mempool.c +++ b/src/freedreno/decode/crashdec-mempool.c @@ -39,6 +39,7 @@ dump_mem_pool_reg_write(unsigned reg, uint32_t data, unsigned context, printf("\t\t\t"); dump_register(rnn_pipe, reg, data); } + rnn_reginfo_free(info); } else { printf("\t\twrite %s (%05x) context %d\n", regname(reg, 1), reg, context); dump_register_val(reg, data, 2); diff --git a/src/freedreno/decode/crashdec.c b/src/freedreno/decode/crashdec.c index 1da27c6..640f8d4 100644 --- a/src/freedreno/decode/crashdec.c +++ b/src/freedreno/decode/crashdec.c @@ -469,6 +469,7 @@ dump_register(struct rnn *rnn, uint32_t offset, uint32_t value) } else { printf("<%04x>: %08x\n", offset, value); } + rnn_reginfo_free(info); } static void diff --git a/src/freedreno/decode/rddecompiler.c b/src/freedreno/decode/rddecompiler.c index 0669148..593cfd6 100644 --- a/src/freedreno/decode/rddecompiler.c +++ b/src/freedreno/decode/rddecompiler.c @@ -266,6 +266,8 @@ decompile_register(uint32_t regbase, uint32_t *dwords, uint16_t cnt, int level) printlvl(level, "pkt4(cs, %u, (%u), %u);\n", regbase, cnt, dword); } + rnn_reginfo_free(info); + return 1; } diff --git a/src/freedreno/decode/rnnutil.c b/src/freedreno/decode/rnnutil.c index d280389..6c7b000 100644 --- a/src/freedreno/decode/rnnutil.c +++ b/src/freedreno/decode/rnnutil.c @@ -144,12 +144,22 @@ rnn_regname(struct rnn *rnn, uint32_t regbase, int color) return NULL; } +/* call rnn_reginfo_free() to free the result */ struct rnndecaddrinfo * rnn_reginfo(struct rnn *rnn, uint32_t regbase) { return rnndec_decodeaddr(rnn->vc, finddom(rnn, regbase), regbase, 0); } +void +rnn_reginfo_free(struct rnndecaddrinfo *info) +{ + if (!info) + return; + free(info->name); + free(info); +} + const char * rnn_enumname(struct rnn *rnn, const char *name, uint32_t val) { diff --git a/src/freedreno/decode/rnnutil.h b/src/freedreno/decode/rnnutil.h index b288323..6651096 100644 --- a/src/freedreno/decode/rnnutil.h +++ b/src/freedreno/decode/rnnutil.h @@ -55,6 +55,7 @@ void rnn_load(struct rnn *rnn, const char *gpuname); uint32_t rnn_regbase(struct rnn *rnn, const char *name); const char *rnn_regname(struct rnn *rnn, uint32_t regbase, int color); struct rnndecaddrinfo *rnn_reginfo(struct rnn *rnn, uint32_t regbase); +void rnn_reginfo_free(struct rnndecaddrinfo *info); const char *rnn_enumname(struct rnn *rnn, const char *name, uint32_t val); struct rnndelem *rnn_regelem(struct rnn *rnn, const char *name); diff --git a/src/freedreno/decode/script.c b/src/freedreno/decode/script.c index c2bf75d..956102b 100644 --- a/src/freedreno/decode/script.c +++ b/src/freedreno/decode/script.c @@ -393,10 +393,7 @@ l_rnn_reg_meta_tostring(lua_State *L) } lua_pushstring(L, decoded); free(decoded); - if (info) { - free(info->name); - free(info); - } + rnn_reginfo_free(info); return 1; } @@ -519,10 +516,7 @@ l_rnn_regval(lua_State *L) } lua_pushstring(L, decoded); free(decoded); - if (info) { - free(info->name); - free(info); - } + rnn_reginfo_free(info); return 1; }