From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42BC0C25B75 for ; Mon, 3 Jun 2024 21:19:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B4F4B6B009F; Mon, 3 Jun 2024 17:19:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AB0DD6B00A0; Mon, 3 Jun 2024 17:19:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9A0DF6B00A1; Mon, 3 Jun 2024 17:19:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 7C8626B009F for ; Mon, 3 Jun 2024 17:19:03 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 362EC40938 for ; Mon, 3 Jun 2024 21:19:03 +0000 (UTC) X-FDA: 82190842566.04.FA6A6BC Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf20.hostedemail.com (Postfix) with ESMTP id 58D7D1C001A for ; Mon, 3 Jun 2024 21:19:01 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of "SRS0=/hzC=NF=goodmis.org=rostedt@kernel.org" designates 139.178.84.217 as permitted sender) smtp.mailfrom="SRS0=/hzC=NF=goodmis.org=rostedt@kernel.org"; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717449541; a=rsa-sha256; cv=none; b=vnfIY05VSGUfaEcmNMtUQeZ9hZJMViuBmgQ5ypeoN9ecEV3Pho6YQdbQVnBxACwNcTWk5g KSam/3x0hW7MKjlMg9eZmRheaZHNq/Qdb7sr1N0kFHOis+7MKcJga4AmQXPF2Hzf2nCwAV I8PdyjTtBDH0xEqSNlenlHvfxvaNx60= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of "SRS0=/hzC=NF=goodmis.org=rostedt@kernel.org" designates 139.178.84.217 as permitted sender) smtp.mailfrom="SRS0=/hzC=NF=goodmis.org=rostedt@kernel.org"; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717449541; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VQe+Xx4nptzzBkeLD6MEMQMdzJqlHZByiECO84x/Dlo=; b=nrq5iXugTdXfB56oxpa+Z2H8Pb4voTl2wKqbfLJPY2U02HfJKSLWDd/VlrSbjuhhLC5r7O CBbwEq9CsC2TX+QHh6eyp7DrhaXyOglOl2AQc9eQFSkocrlNTcx46FjCNa7/Xyot0OcEqZ CzLGrW9CocmQ4twEBXDzezPL7km4P7o= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 42F8260C97; Mon, 3 Jun 2024 21:19:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7ACC8C2BD10; Mon, 3 Jun 2024 21:18:58 +0000 (UTC) Date: Mon, 3 Jun 2024 17:20:08 -0400 From: Steven Rostedt To: Yafang Shao Cc: torvalds@linux-foundation.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, audit@vger.kernel.org, linux-security-module@vger.kernel.org, selinux@vger.kernel.org, bpf@vger.kernel.org, Masami Hiramatsu , Mathieu Desnoyers Subject: Re: [PATCH 2/6] tracing: Replace memcpy() with __get_task_comm() Message-ID: <20240603172008.19ba98ff@gandalf.local.home> In-Reply-To: <20240602023754.25443-3-laoar.shao@gmail.com> References: <20240602023754.25443-1-laoar.shao@gmail.com> <20240602023754.25443-3-laoar.shao@gmail.com> X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 58D7D1C001A X-Stat-Signature: jt9m8bgac4je6mzkzhimf3aknpcojm39 X-HE-Tag: 1717449541-313457 X-HE-Meta: U2FsdGVkX1+UYBOt/qoLUnoZ+oNIcNWt1hw4UTq47I0CllegiGWp4nnxnAhHYfbO4ni+8fA6NnwmOd2/SvqyE7z+2I7CwUlO87svCYiH3UePm9OvFWDIPr1DN7k+Ryks+uba2tsDUbYqFB4D57teIOaDPkXl5rJsaU3LT/pu5bubMD/GGL+lf+WPZmPS3KIt3uuIDKcnC0UxTvy4frvYucPCKMsi56UFFx/Z6SvPZQc15DfoXoeOONmb3mK+Zv5DICiHzdrsTuwOz4f4SO/Hv5mbmVSieIocKQl6flULxn9JU7CMJYjkyV+7Ic9oXx7xrTLRa7qvQ66my4hvntLNbINSvS5I8p+aW1C4067K9Ms+xojYIfYNPI90wb/sfVf4x/KIt4gxlbzEgBkCDlAldrjiPIpUzzwNiQGzhBkyU5seABvSqpQnQ+q+B+2+crEByzoljdV+pMariVOOx+LO4WCTyBfFkDJeWARzYOPagpU9O3WG8boIgeKrfyrohmMELXpH6AMc+hDxFGPp8lIGlEMe3ZkVMSYnqRtF1OW/WggnqzdTclAvcngn05mhiJPA1TGbKe8P386wYgdJJpJXj3/XxLlliRKGxxCq/xX76p7qdVAkp9UBPKohAwYxHL7VUOfuAeIGtquyD3N3V8ZyK6xlJ9WDjHCb1x9ppLVnkUPwDrXbce854mRn9+gNae1f4qvoMt4xSFRG1QGrZd4FXeNfri9KYog4XY6jhzq6Vgy1qGVJYT75PXJxOpCnYzlicKaLnJSUJeDwSRjaYkqQWzTomaobPkqUIPqOg9QNEYF5u+xi8dSLublPfKyJEaRqO6qFejGj6bU8zLoJaCZag75VCnMcYPenpGdbGd6UMSf//+kof1XqwHyt0yaMzpn0xgoSRo4ubKgpex1nU9S4WiniZSAql/KfIDg1xw2nL+vmUglwaz2gPVBbmpYulNwCR3OWghiXnaWSFzSXmgQ UJis7m5C flusB1bgDHRNSiUnh29ateslw6Lohqzf/It1Ih/l+Cr0RSPOTIA4L2pXIR1Znlfzl85JOQhSjoggDKI1NROOxykTdscUY2/lrslrm1GlWruwofIL0dmoe4XtWrVUFm5/Wv0TOp0KpImPzyC0pnt71h1SwkJ40zthlfPJ5bFEIYoRiAsSelwdvUpXprzBgwblEeeNz0ZPC9VCJ2iLHDzKxsBQ++3nTIEz0RZYhx8iTDiFYZIfZPZt4DaqHEBoeNZMnBQOM+ZBKTxqnW85Ot+JeWT5LPjQS7UjqlbSNtTDEOhTCwnaWICt2VS8kG1hs0QoDsIk9L6AfB25xi5LPpjhSoX3GlQG7zHqCZ/CNhXVpQCDyhRON6aoGYEsLzo66r+lOTiqjV/13sU8wE/AX/zd6ywd60lxIoIcjD+BSQEyySiTgxlyAY70uiRdp8St027DmeVNBT0IYphLeigStIbdxk9974qVCNGRn7E9KNApBYYIvB5/DYknrx+xVjmb7jIwuhQc/B0WF6CBnlb5Ofp51SBMXu97KsJeSuQ5ckya8cp8PBohw6k/BV2kNm8pTKjJxQIMg X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Sun, 2 Jun 2024 10:37:50 +0800 Yafang Shao wrote: > Using __get_task_comm() to read the task comm ensures that the name is > always NUL-terminated, regardless of the source string. This approach also > facilitates future extensions to the task comm. > > Signed-off-by: Yafang Shao > Cc: Steven Rostedt > Cc: Masami Hiramatsu > Cc: Mathieu Desnoyers > --- > include/linux/tracepoint.h | 4 ++-- > include/trace/events/block.h | 10 +++++----- > include/trace/events/oom.h | 2 +- > include/trace/events/osnoise.h | 2 +- > include/trace/events/sched.h | 27 ++++++++++++++------------- > include/trace/events/signal.h | 2 +- > include/trace/events/task.h | 4 ++-- > 7 files changed, 26 insertions(+), 25 deletions(-) > [..] > diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h > index 68973f650c26..2a9d7c62c58a 100644 > --- a/include/trace/events/sched.h > +++ b/include/trace/events/sched.h > @@ -9,6 +9,7 @@ > #include > #include > #include > +#include > > /* > * Tracepoint for calling kthread_stop, performed to end a kthread: > @@ -25,7 +26,7 @@ TRACE_EVENT(sched_kthread_stop, > ), > > TP_fast_assign( > - memcpy(__entry->comm, t->comm, TASK_COMM_LEN); > + __get_task_comm(__entry->comm, TASK_COMM_LEN, t); > __entry->pid = t->pid; > ), > > @@ -152,7 +153,7 @@ DECLARE_EVENT_CLASS(sched_wakeup_template, > ), > > TP_fast_assign( > - memcpy(__entry->comm, p->comm, TASK_COMM_LEN); > + __get_task_comm(__entry->comm, TASK_COMM_LEN, p); > __entry->pid = p->pid; > __entry->prio = p->prio; /* XXX SCHED_DEADLINE */ > __entry->target_cpu = task_cpu(p); > @@ -239,11 +240,11 @@ TRACE_EVENT(sched_switch, > ), > > TP_fast_assign( > - memcpy(__entry->next_comm, next->comm, TASK_COMM_LEN); > + __get_task_comm(__entry->next_comm, TASK_COMM_LEN, next); > __entry->prev_pid = prev->pid; > __entry->prev_prio = prev->prio; > __entry->prev_state = __trace_sched_switch_state(preempt, prev_state, prev); > - memcpy(__entry->prev_comm, prev->comm, TASK_COMM_LEN); > + __get_task_comm(__entry->prev_comm, TASK_COMM_LEN, prev); > __entry->next_pid = next->pid; > __entry->next_prio = next->prio; > /* XXX SCHED_DEADLINE */ sched_switch is special so we could probably hold off, but the rest should be converted to the normal way strings are processed in trace events. That is, to use __string(), __assign_str() and __get_str() for task->comm. I've been wanting to do that for a while, but thought that memcpy() was a bit faster than the need for strlen(). But this now needs to test the length of comm. This method will also allow comms to be recorded that are larger than 16 bytes (if we extend comm). TRACE_EVENT(sched_migrate_task, TP_PROTO(struct task_struct *p, int dest_cpu), TP_ARGS(p, dest_cpu), TP_STRUCT__entry( - __array( char, comm, TASK_COMM_LEN ) + __string( comm, strlen(comm) ) __field( pid_t, pid ) __field( int, prio ) __field( int, orig_cpu ) __field( int, dest_cpu ) ), TP_fast_assign( - memcpy(__entry->comm, p->comm, TASK_COMM_LEN); + __assign_str(comm); __entry->pid = p->pid; __entry->prio = p->prio; /* XXX SCHED_DEADLINE */ __entry->orig_cpu = task_cpu(p); __entry->dest_cpu = dest_cpu; ), TP_printk("comm=%s pid=%d prio=%d orig_cpu=%d dest_cpu=%d", - __entry->comm, __entry->pid, __entry->prio, + __get_str(comm), __entry->pid, __entry->prio, __entry->orig_cpu, __entry->dest_cpu) ); -- Steve > @@ -286,7 +287,7 @@ TRACE_EVENT(sched_migrate_task, > ), > > TP_fast_assign( > - memcpy(__entry->comm, p->comm, TASK_COMM_LEN); > + __get_task_comm(__entry->comm, TASK_COMM_LEN, p); > __entry->pid = p->pid; > __entry->prio = p->prio; /* XXX SCHED_DEADLINE */ > __entry->orig_cpu = task_cpu(p);