target/s390x/arch_dump: Simplify memory allocation in s390x_write_elf64_notes()
We are not on a hot path here, so there is no real need for the logic here with the split heap and stack space allocation. Simplify it by always allocating memory from the heap. Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-Id: <20230215085703.746788-1-thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
eb60026120
commit
4376a770c7
|
@ -227,25 +227,25 @@ static int s390x_write_elf64_notes(const char *note_name,
|
||||||
DumpState *s,
|
DumpState *s,
|
||||||
const NoteFuncDesc *funcs)
|
const NoteFuncDesc *funcs)
|
||||||
{
|
{
|
||||||
Note note, *notep;
|
g_autofree Note *notep = NULL;
|
||||||
const NoteFuncDesc *nf;
|
const NoteFuncDesc *nf;
|
||||||
int note_size, content_size;
|
int note_size, prev_size = 0, content_size;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
assert(strlen(note_name) < sizeof(note.name));
|
assert(strlen(note_name) < sizeof(notep->name));
|
||||||
|
|
||||||
for (nf = funcs; nf->note_contents_func; nf++) {
|
for (nf = funcs; nf->note_contents_func; nf++) {
|
||||||
notep = ¬e;
|
|
||||||
if (nf->pvonly && !s390_is_pv()) {
|
if (nf->pvonly && !s390_is_pv()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
content_size = nf->note_size_func ? nf->note_size_func() : nf->contents_size;
|
content_size = nf->note_size_func ? nf->note_size_func() : nf->contents_size;
|
||||||
note_size = sizeof(note) - sizeof(notep->contents) + content_size;
|
note_size = sizeof(Note) - sizeof(notep->contents) + content_size;
|
||||||
|
|
||||||
/* Notes with dynamic sizes need to allocate a note */
|
if (prev_size < note_size) {
|
||||||
if (nf->note_size_func) {
|
g_free(notep);
|
||||||
notep = g_malloc(note_size);
|
notep = g_malloc(note_size);
|
||||||
|
prev_size = note_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(notep, 0, note_size);
|
memset(notep, 0, note_size);
|
||||||
|
@ -258,15 +258,9 @@ static int s390x_write_elf64_notes(const char *note_name,
|
||||||
/* Get contents and write them out */
|
/* Get contents and write them out */
|
||||||
(*nf->note_contents_func)(notep, cpu, id);
|
(*nf->note_contents_func)(notep, cpu, id);
|
||||||
ret = f(notep, note_size, s);
|
ret = f(notep, note_size, s);
|
||||||
|
|
||||||
if (nf->note_size_func) {
|
|
||||||
g_free(notep);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue