From patchwork Fri Dec 2 23:51:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Beau Belgrave X-Patchwork-Id: 29148 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp1126668wrr; Fri, 2 Dec 2022 15:52:29 -0800 (PST) X-Google-Smtp-Source: AA0mqf7eY5Y/iU9VTDJ44CxUbxb4WREDJlkYZOWBcfxrfAs5Hklfatgh8gQroOEgRk/5BzAmmksK X-Received: by 2002:a17:906:5586:b0:7ad:902c:d158 with SMTP id y6-20020a170906558600b007ad902cd158mr48476423ejp.121.1670025149226; Fri, 02 Dec 2022 15:52:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670025149; cv=none; d=google.com; s=arc-20160816; b=IDPr9WIdOZWQhZp8Pir/fI4oQQpQhI/3mYzu9so+g44klLhIGN8sZ6JboBwFXpo4l2 MIoVdg6Ip5087FKqTTgkxDAA8m3GhNcx6GUr3S7fAMc0t4gbJi2vE1viTUkUTJMEjlSi CoNYG+Tjcu83pqnZ1Zhdgdxp6GUQcK5sF33ktl+WKpmS36UwLQuc1BpMfoR7mBkPwwDZ le/PfHb9CpyzsN3xC0QmzwwO7kvQhQYdzVT/HhdCPED9xjvlp0zfuzAcyjRxJGxFBXZG 8GBJHFv3zg/yb01B5GZ0ww6/eEMHmBLa8IZmbfV20gPVeIf3eTfTZKRgtNz6avw5VXmN r+yg== 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=uParTVU9Z9xqfA98lJokNpjIwc9u+HZsqpYzGti/vmY=; b=CqpS2X+2fUaDtIwMuB4VkkU58fOt5sEdlnoI1jMeypDLjajnk9KasWzW6tcZwGz3FI bxmglRFrxxDmMsa5WVsOC/bONN3yGJLox3fJkQr3/sekXxGJEgSbE8rX+QhR514Cmuiw X58U6n4fRVzaljLnLyfk0j0g8jzJSjfeyL5GhIzzGGj72FH+QzGpxX453hXYDSb6TLYg 6uJ/aiDUFfI8EDb9xsHNTx0VhW1LV5P2Fmjzf9eNLsG09iwpy2iLvyxEPMuVvx72VcZZ VNdmD5NPlZAj9QDPnonuph2Jdnmas/8K8bB73YitJ20pPmBq6RFooclDxt4iE+AyfH0D DVZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=C8Rc2nnA; 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 y13-20020a056402270d00b0044ecd80f257si7820783edd.603.2022.12.02.15.52.05; Fri, 02 Dec 2022 15:52:29 -0800 (PST) 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=C8Rc2nnA; 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 S234863AbiLBXvw (ORCPT + 99 others); Fri, 2 Dec 2022 18:51:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234557AbiLBXvp (ORCPT ); Fri, 2 Dec 2022 18:51:45 -0500 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A35AEFB8AB; Fri, 2 Dec 2022 15:51:44 -0800 (PST) Received: from W11-BEAU-MD.localdomain (unknown [76.135.50.127]) by linux.microsoft.com (Postfix) with ESMTPSA id 29A4620B83CB; Fri, 2 Dec 2022 15:51:44 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 29A4620B83CB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1670025104; bh=uParTVU9Z9xqfA98lJokNpjIwc9u+HZsqpYzGti/vmY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C8Rc2nnAOnDwe/nru6hiYEfnjeQiPYkYZ6PXiaG7zU+1xFwRcR30Piy0zNHjUFwCe nInHYeh4XedRb3evn9wpu4mPc6GuQhjoc5Ikyz2zlC1VBhEVgPP98X5L6UsElYFgLY U/Vk7WsAYyoZbcVGLrDpRiH0Z7VVtgZciCkBFqAA= From: Beau Belgrave To: rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com, dcook@linux.microsoft.com, alanau@linux.microsoft.com, brauner@kernel.org, akpm@linux-foundation.org Cc: linux-trace-devel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 02/11] tracing/user_events: Track fork/exec/exit for mm lifetime Date: Fri, 2 Dec 2022 15:51:29 -0800 Message-Id: <20221202235138.450-3-beaub@linux.microsoft.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221202235138.450-1-beaub@linux.microsoft.com> References: <20221202235138.450-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,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?1751148290823130881?= X-GMAIL-MSGID: =?utf-8?q?1751148290823130881?= During tracefs discussions it was decided instead of requiring a mapping within a user-process to track the lifetime of memory descriptors we should hook the appropriate calls. Do this by adding the minimal stubs required for task fork, exec, and exit. Currently this is just a NOP. Future patches will implement these calls fully. Suggested-by: Mathieu Desnoyers Signed-off-by: Beau Belgrave --- fs/exec.c | 2 ++ include/linux/sched.h | 5 +++++ include/linux/user_events.h | 16 +++++++++++++++- kernel/exit.c | 2 ++ kernel/fork.c | 2 ++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/fs/exec.c b/fs/exec.c index a0b1f0337a62..75ca6fbd195c 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -64,6 +64,7 @@ #include #include #include +#include #include #include @@ -1842,6 +1843,7 @@ static int bprm_execve(struct linux_binprm *bprm, current->fs->in_exec = 0; current->in_execve = 0; rseq_execve(current); + user_events_execve(current); acct_update_integrals(current); task_numa_free(current, false); return retval; diff --git a/include/linux/sched.h b/include/linux/sched.h index ffb6eb55cd13..61ed2f9deb26 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -69,6 +69,7 @@ struct sighand_struct; struct signal_struct; struct task_delay_info; struct task_group; +struct user_event_mm; /* * Task state bitmask. NOTE! These bits are also @@ -1528,6 +1529,10 @@ struct task_struct { union rv_task_monitor rv[RV_PER_TASK_MONITORS]; #endif +#ifdef CONFIG_USER_EVENTS + struct user_event_mm *user_event_mm; +#endif + /* * New fields for task_struct should be added above here, so that * they are included in the randomized portion of task_struct. diff --git a/include/linux/user_events.h b/include/linux/user_events.h index 036b360f3d97..3d747c45d2fa 100644 --- a/include/linux/user_events.h +++ b/include/linux/user_events.h @@ -12,7 +12,21 @@ #include #ifdef CONFIG_USER_EVENTS -#else +struct user_event_mm { +}; #endif +static inline void user_events_fork(struct task_struct *t, + unsigned long clone_flags) +{ +} + +static inline void user_events_execve(struct task_struct *t) +{ +} + +static inline void user_events_exit(struct task_struct *t) +{ +} + #endif /* _LINUX_USER_EVENTS_H */ diff --git a/kernel/exit.c b/kernel/exit.c index 35e0a31a0315..0bfadc26d278 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -67,6 +67,7 @@ #include #include #include +#include #include #include @@ -769,6 +770,7 @@ void __noreturn do_exit(long code) coredump_task_exit(tsk); ptrace_event(PTRACE_EVENT_EXIT, code); + user_events_exit(tsk); validate_creds_for_do_exit(tsk); diff --git a/kernel/fork.c b/kernel/fork.c index 08969f5aa38d..a4be76276ccb 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -97,6 +97,7 @@ #include #include #include +#include #include #include @@ -2487,6 +2488,7 @@ static __latent_entropy struct task_struct *copy_process( trace_task_newtask(p, clone_flags); uprobe_copy_process(p, clone_flags); + user_events_fork(p, clone_flags); copy_oom_score_adj(clone_flags, p);