From patchwork Wed Jun 14 16:33:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Beau Belgrave X-Patchwork-Id: 108062 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp107002vqr; Wed, 14 Jun 2023 10:17:17 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5sB56MJYexwwkFx4x8g0RP9ODFnDONGmOsvTH0DSnZbE85so/wx4TG+zO6KxxeY5hYREA9 X-Received: by 2002:a05:6a20:2588:b0:10b:dca5:74e5 with SMTP id k8-20020a056a20258800b0010bdca574e5mr2416864pzd.0.1686763037443; Wed, 14 Jun 2023 10:17:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686763037; cv=none; d=google.com; s=arc-20160816; b=ZN0MEL/dNTH7TtRufdQxdS7b1id5T2VVkPBbKxj0ASuOjBqVVtpebTaRTZgCWOHwJj FkXe1Fz7VKNR3707Xy/naszdVyDLVT0Iv2LM7l3iJi58KIGa7DuVBYN8fr+FSxyLce7k xIPel5Rj14aZZuQ5w8TBvhB4ECkWGeIGz/qOY1Vz/O2fd+9PGn+PHuxvE80a/qcx42PT 9r3XMzX47JvtNzfEBO683w5DJumCC7bms8t4Dv047wcfQ0JZ2C3UH/a4zm7+oIiBe1kd Wuxk9AXq3MXQUAqVvLV7Lx0r9gAL16jK74UL/9TynSwSPpSa7alARS9foLDf5330ZIr5 3ACA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-filter; bh=SfIyYj95J/RW8ouG7qSlLS6zRHlnKNgkIAoGUxHrtq0=; b=EpYY2TUY7V1D9sZPZiIevtzHIYAZh0koZ3E094soRGW5/+x5Ps2APTZxMWry7N+Hsh d7Y5AeDP4KL2rJjjz98scx8nX+pmlQfpQnXW+9Z5V0o3+GO4HI/0HcbpTqCOVjdtKAnm A7mhbCFuVX6va5w6BBNQELfWSabRLTpsVHyUvwUZiQsQRxRFw5uTjVHzv/omZAZQohAj QKuu+Ghnqwh+r5kHk5loIqMLqSCaLSE8uS6R4czdIIE4NG2Ruais+w86S/87aJd5FCWg R5xorU55ABCkPXZiVPGwbmbOQ4K43v2Tjhg/xXcDVENv+C5Gs7bYfL3CNoya6C49xXxQ eOYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=CFuMkI5H; 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=linux.microsoft.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j14-20020a636e0e000000b0053424040bb7si11132205pgc.298.2023.06.14.10.16.59; Wed, 14 Jun 2023 10:17:17 -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=@linux.microsoft.com header.s=default header.b=CFuMkI5H; 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=linux.microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234393AbjFNQdt (ORCPT + 99 others); Wed, 14 Jun 2023 12:33:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234198AbjFNQdm (ORCPT ); Wed, 14 Jun 2023 12:33:42 -0400 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 08F5A1FF5; Wed, 14 Jun 2023 09:33:41 -0700 (PDT) Received: from W11-BEAU-MD.localdomain (unknown [76.135.27.212]) by linux.microsoft.com (Postfix) with ESMTPSA id 71BF520FEA4C; Wed, 14 Jun 2023 09:33:40 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 71BF520FEA4C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1686760420; bh=SfIyYj95J/RW8ouG7qSlLS6zRHlnKNgkIAoGUxHrtq0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CFuMkI5HspE/dncp81UDflGaqfC6Yd6t1yqDUXXkWNoLWh28AB8vUFVyjZZlQCQJx CeNRR58VcwAVO/W4jNartIUzOysuoTAI8p1H8zQ1/wJwHM7+hV/yWXmCPbijiuvDKI ldj8vQC1A+XxUR7/BjmxUXtwv1K/Gsk8eZ9WctiE= From: Beau Belgrave To: rostedt@goodmis.org, mhiramat@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, ast@kernel.org, dcook@linux.microsoft.com Subject: [PATCH v3 1/6] tracing/user_events: Store register flags on events Date: Wed, 14 Jun 2023 09:33:31 -0700 Message-Id: <20230614163336.5797-2-beaub@linux.microsoft.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230614163336.5797-1-beaub@linux.microsoft.com> References: <20230614163336.5797-1-beaub@linux.microsoft.com> MIME-Version: 1.0 X-Spam-Status: No, score=-19.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_WL 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768699238709543709?= X-GMAIL-MSGID: =?utf-8?q?1768699238709543709?= Currently we don't have any available flags for user processes to use to indicate options for user_events. We will soon have a flag to indicate the event should or should not auto-delete once it's not being used by anyone. Add a reg_flags field to user_events and parameters to existing functions to allow for this in future patches. Signed-off-by: Beau Belgrave --- kernel/trace/trace_events_user.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c index cf6d4c02c363..629823e21447 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -87,6 +87,7 @@ struct user_event { struct list_head validators; refcount_t refcnt; int min_size; + int reg_flags; char status; }; @@ -165,7 +166,7 @@ typedef void (*user_event_func_t) (struct user_event *user, struct iov_iter *i, static int user_event_parse(struct user_event_group *group, char *name, char *args, char *flags, - struct user_event **newuser); + struct user_event **newuser, int reg_flags); static struct user_event_mm *user_event_mm_get(struct user_event_mm *mm); static struct user_event_mm *user_event_mm_get_all(struct user_event *user); @@ -810,7 +811,8 @@ static struct list_head *user_event_get_fields(struct trace_event_call *call) * Upon success user_event has its ref count increased by 1. */ static int user_event_parse_cmd(struct user_event_group *group, - char *raw_command, struct user_event **newuser) + char *raw_command, struct user_event **newuser, + int reg_flags) { char *name = raw_command; char *args = strpbrk(name, " "); @@ -824,7 +826,7 @@ static int user_event_parse_cmd(struct user_event_group *group, if (flags) *flags++ = '\0'; - return user_event_parse(group, name, args, flags, newuser); + return user_event_parse(group, name, args, flags, newuser, reg_flags); } static int user_field_array_size(const char *type) @@ -1588,7 +1590,7 @@ static int user_event_create(const char *raw_command) mutex_lock(&group->reg_mutex); - ret = user_event_parse_cmd(group, name, &user); + ret = user_event_parse_cmd(group, name, &user, 0); if (!ret) refcount_dec(&user->refcnt); @@ -1751,7 +1753,7 @@ static int user_event_trace_register(struct user_event *user) */ static int user_event_parse(struct user_event_group *group, char *name, char *args, char *flags, - struct user_event **newuser) + struct user_event **newuser, int reg_flags) { int ret; u32 key; @@ -1846,6 +1848,8 @@ static int user_event_parse(struct user_event_group *group, char *name, if (ret) goto put_user_lock; + user->reg_flags = reg_flags; + /* Ensure we track self ref and caller ref (2) */ refcount_set(&user->refcnt, 2); @@ -2144,7 +2148,7 @@ static long user_events_ioctl_reg(struct user_event_file_info *info, return ret; } - ret = user_event_parse_cmd(info->group, name, &user); + ret = user_event_parse_cmd(info->group, name, &user, reg.flags); if (ret) { kfree(name);