@@ -564,14 +564,15 @@ static void make_pid_filter(struct tracecmd_input *handle,
static void process_filters(struct handle_list *handles)
{
+ struct input_files *input_file = handles->input_file ?: last_input_file;
struct tracecmd_filter *trace_filter;
struct filter_str *filter;
int filters = 0;
- make_pid_filter(handles->handle, handles->input_file);
+ make_pid_filter(handles->handle, input_file);
- if (handles->input_file)
- filter = handles->input_file->filter_str;
+ if (input_file)
+ filter = input_file->filter_str;
else
filter = filter_strings;
Since 955d05fc7aee ("trace-cmd report: Make filter arguments match their files"), the -F filtering is silently ignored when a trace file is provided with -i and the filter comes after -i . The reason is that the filter is now associated with input_files and not saved to the global list only in this case, but process_filters still only checks the global list when handles->input_file is not set. Avoid this by checking last_input_file first, which always contains a pointer to the correct filter in this case. This was only lightly tested, using a single trace file. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=217038 Fixes: 955d05fc7aee ("trace-cmd report: Make filter arguments match their files") Signed-off-by: Gabriel krisman Bertazi <krisman@suse.de> --- Since v1: - use rev. xmas tree for variable declaration (steve) --- tracecmd/trace-read.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)