From: Alex Bradbury <[email protected]> The logic to iterate over the hottest blocks will never reach the last item in the list, as it checks `it->next != NULL` before entering the loop. It's hard to trigger this off-by-one error with the default limit=20, but it is a bug and is problematic if that default is changed to something larger.
Signed-off-by: Alex Bradbury <[email protected]> Reviewed-by: Pierrick Bouvier <[email protected]> Link: https://lore.kernel.org/qemu-devel/f1ba2e57c6126472c0c8310774009f2455efc370.1753857212.git....@igalia.com Signed-off-by: Pierrick Bouvier <[email protected]> --- contrib/plugins/hotblocks.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contrib/plugins/hotblocks.c b/contrib/plugins/hotblocks.c index d3dd23ed9fa..cf4d6b8c363 100644 --- a/contrib/plugins/hotblocks.c +++ b/contrib/plugins/hotblocks.c @@ -82,10 +82,9 @@ static void plugin_exit(qemu_plugin_id_t id, void *p) sorted_counts = g_list_sort_with_data(counts, cmp_exec_count, NULL); if (sorted_counts) { - it = sorted_counts; g_string_append_printf(report, "pc, tcount, icount, ecount\n"); - for (i = 0; i < limit && it->next; i++, it = it->next) { + for (i = 0, it = sorted_counts; i < limit && it; i++, it = it->next) { ExecCount *rec = (ExecCount *) it->data; g_string_append_printf( report, "0x%016"PRIx64", %d, %ld, %"PRId64"\n", -- 2.47.3
