Message ID | 20230728195646.168997-3-danielhb413@gmail.com |
---|---|
State | New |
Headers | show |
Series | ppc: get rid of free() (gitlab #1798) | expand |
On Fri, 28 Jul 2023 at 21:47, Daniel Henrique Barboza <danielhb413@gmail.com> wrote: > > Use g_free(table[i]) instead of free(table[i]) to comply with QEMU low > level memory management guidelines. > > Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> > --- > target/ppc/translate.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/ppc/translate.c b/target/ppc/translate.c > index e6a0709066..d90535266e 100644 > --- a/target/ppc/translate.c > +++ b/target/ppc/translate.c > @@ -7129,7 +7129,7 @@ static int test_opcode_table(opc_handler_t **table, int len) > tmp = test_opcode_table(ind_table(table[i]), > PPC_CPU_INDIRECT_OPCODES_LEN); > if (tmp == 0) { > - free(table[i]); > + g_free(table[i]); > table[i] = &invalid_handler; > } else { > count++; Where is the allocation that this memory is free()ing? I think it is the g_new() in create_new_table(), but the code is a little complicated for me to understand... thanks -- PMM
On 7/29/23 12:32, Peter Maydell wrote: > On Fri, 28 Jul 2023 at 21:47, Daniel Henrique Barboza > <danielhb413@gmail.com> wrote: >> >> Use g_free(table[i]) instead of free(table[i]) to comply with QEMU low >> level memory management guidelines. >> >> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> >> --- >> target/ppc/translate.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/target/ppc/translate.c b/target/ppc/translate.c >> index e6a0709066..d90535266e 100644 >> --- a/target/ppc/translate.c >> +++ b/target/ppc/translate.c >> @@ -7129,7 +7129,7 @@ static int test_opcode_table(opc_handler_t **table, int len) >> tmp = test_opcode_table(ind_table(table[i]), >> PPC_CPU_INDIRECT_OPCODES_LEN); >> if (tmp == 0) { >> - free(table[i]); >> + g_free(table[i]); >> table[i] = &invalid_handler; >> } else { >> count++; > > Where is the allocation that this memory is free()ing? I > think it is the g_new() in create_new_table(), but the code > is a little complicated for me to understand... It's on create_new_table() in the same file: static int create_new_table(opc_handler_t **table, unsigned char idx) { opc_handler_t **tmp; tmp = g_new(opc_handler_t *, PPC_CPU_INDIRECT_OPCODES_LEN); fill_new_table(tmp, PPC_CPU_INDIRECT_OPCODES_LEN); table[idx] = (opc_handler_t *)((uintptr_t)tmp | PPC_INDIRECT); return 0; } I probably should've mentioned in the commit msg ... Daniel > > thanks > -- PMM
diff --git a/target/ppc/translate.c b/target/ppc/translate.c index e6a0709066..d90535266e 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7129,7 +7129,7 @@ static int test_opcode_table(opc_handler_t **table, int len) tmp = test_opcode_table(ind_table(table[i]), PPC_CPU_INDIRECT_OPCODES_LEN); if (tmp == 0) { - free(table[i]); + g_free(table[i]); table[i] = &invalid_handler; } else { count++;
Use g_free(table[i]) instead of free(table[i]) to comply with QEMU low level memory management guidelines. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- target/ppc/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)