Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
trace-cmd library: Fix tracecmd_iterate_events_multi() CPU clean up
In tracecmd_iterate_events_multi(), the clean up code at the end of the function that unlocks and frees the remaining records, iterated the CPUs via a for loop of 0 through all_cpus. But the kbuffer_read_at_offset() function, expects the CPU passed in to be that of the handle and not of all the handles. That is, if there are two trace.dat files being read, and one has 4 CPUs and the other has 2, the "all_cpus" variable will be 6. When iterating at the clean up, when it gets passed 3 (4 CPUs is represented by 0-3) it will then go to 4 and then 5 for the 2 CPUs trace.dat file. Passing in 4 or 5 to kbuffer_read_at_offset() will fail. It needs to use the local CPU count of the trace.dat file. Link: https://lore.kernel.org/linux-trace-devel/[email protected] Fixes: 7f0a59a ("trace-cmd library: Have tracecmd_iterate_events() start where it left off") Signed-off-by: Steven Rostedt (Google) <[email protected]>
- Loading branch information