Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp649988pxb; Tue, 5 Apr 2022 17:18:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJylEdWrscnIDqV9x6ExGDh0Ona3UdJzLeJbqAzeFOfNTGLqglAKhW3s3rFRs/iNa5fSHHeU X-Received: by 2002:a05:6402:5243:b0:419:4ce2:cb5c with SMTP id t3-20020a056402524300b004194ce2cb5cmr6149626edd.151.1649204290174; Tue, 05 Apr 2022 17:18:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649204290; cv=none; d=google.com; s=arc-20160816; b=L/MML7+J2ryjOqCUjtNzGPbBl/+xmcBOAlIWt+0mj6yaS75sO5PWyZSq20xYfnTkT8 yn2y4IdccT+nrfsb6ELx4i/tP6FEDdihuLSDjXWbWRu8ENqjAbTwK3liOIFoE1ekhlNK iEP+jXhkJFQq/9SYCaIOpGnph3cuico0UpFIy9AiCWOFttG4UP6BSIrwgZSPcWelJl8d K4hA8ZjyYQbiaWqL5ggvYkTBAGagYKoHXL5OIcb7qBa6vcFzzjs5eC7yHD71GAO/h2KM 3lMcnOomnvUL2krssbKhQywa4sBQvTBMl+5FnAXSpSQajBobyjblK6bAwPKwbViPhveS JImw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=+G95jMYKqi9kUTPkpA5EHy0YIhRjKAswaGiWrX6HOhY=; b=Y4K0Nc0f3RZjBiCaNBsvUfJKW7YZ0loSu2/mcaCsNe2YfZA7iL5BqgqY+tTWswfzwC Phfbg6/m5v54muiIGrcWu0Ny1WF4m1aZQob3+NQ5hVej4xC2xvV9Cq+gjKRqS+FBpWEs +hGp1EeZx78Q1BtCZrtw0kHA+I11dwXRkHTmYH80Yg5BAf7X29aAtQ/YJbwxw35tJDj+ lUA+0vPeftBOW3u7/bgEa7q7Yl9q/H0FVn3L5XqGYsnfuK3dGhxBzy+1VYYhbGNSdWg8 xh1a0Uvm1oaLGCvamzfkpK6/YlEQgD93JX+BQaIEYOyBPbs1a8cC0XJ6G7ZNf6YqomZp ibAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ZWX0orBF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gr19-20020a170906e2d300b006df76385b95si9874921ejb.53.2022.04.05.17.17.44; Tue, 05 Apr 2022 17:18:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ZWX0orBF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1390553AbiDENm0 (ORCPT + 99 others); Tue, 5 Apr 2022 09:42:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60096 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345305AbiDEJWZ (ORCPT ); Tue, 5 Apr 2022 05:22:25 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CBBF442A21; Tue, 5 Apr 2022 02:10:20 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 7C461B81A22; Tue, 5 Apr 2022 09:10:19 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E17ABC385A2; Tue, 5 Apr 2022 09:10:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649149818; bh=eoZ0HFT+tUf0KCHQlr264DY6FOlKPVdFmmnUbukaqx8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZWX0orBFmsO3rtej4Uw/+s7GDolAf9tmsDYkwNWofSG206ahrCD0nH0vHJBaiFsYj sviIqBmZ+8mgTAcIwpqjVsBYutpJL55kPEIf5zPVJHV830oCVmj3UPeUdfUoAKbbIQ EM81wrVo3IAduQeep1npfirZNju0HWAWhaDEAQQo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ritesh Harjani , "Steven Rostedt (Google)" , Sasha Levin Subject: [PATCH 5.16 0853/1017] tracing: Have TRACE_DEFINE_ENUM affect trace event types as well Date: Tue, 5 Apr 2022 09:29:26 +0200 Message-Id: <20220405070419.556935675@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070354.155796697@linuxfoundation.org> References: <20220405070354.155796697@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Steven Rostedt (Google) [ Upstream commit b3bc8547d3be60898818885f5bf22d0a62e2eb48 ] The macro TRACE_DEFINE_ENUM is used to convert enums in the kernel to their actual value when they are exported to user space via the trace event format file. Currently only the enums in the "print fmt" (TP_printk in the TRACE_EVENT macro) have the enums converted. But the enums can be used to denote array size: field:unsigned int fc_ineligible_rc[EXT4_FC_REASON_MAX]; offset:12; size:36; signed:0; The EXT4_FC_REASON_MAX has no meaning to userspace but it needs to know that information to know how to parse the array. Have the array indexes also be parsed as well. Link: https://lore.kernel.org/all/cover.1646922487.git.riteshh@linux.ibm.com/ Reported-by: Ritesh Harjani Tested-by: Ritesh Harjani Signed-off-by: Steven Rostedt (Google) Signed-off-by: Sasha Levin --- kernel/trace/trace_events.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index c097d89ca946..f809d795a9a8 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -2637,6 +2637,33 @@ static void update_event_printk(struct trace_event_call *call, } } +static void update_event_fields(struct trace_event_call *call, + struct trace_eval_map *map) +{ + struct ftrace_event_field *field; + struct list_head *head; + char *ptr; + int len = strlen(map->eval_string); + + head = trace_get_fields(call); + list_for_each_entry(field, head, link) { + ptr = strchr(field->type, '['); + if (!ptr) + continue; + ptr++; + + if (!isalpha(*ptr) && *ptr != '_') + continue; + + if (strncmp(map->eval_string, ptr, len) != 0) + continue; + + ptr = eval_replace(ptr, map, len); + /* enum/sizeof string smaller than value */ + WARN_ON_ONCE(!ptr); + } +} + void trace_event_eval_update(struct trace_eval_map **map, int len) { struct trace_event_call *call, *p; @@ -2672,6 +2699,7 @@ void trace_event_eval_update(struct trace_eval_map **map, int len) first = false; } update_event_printk(call, map[i]); + update_event_fields(call, map[i]); } } } -- 2.34.1