From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from fhigh-b4-smtp.messagingengine.com (fhigh-b4-smtp.messagingengine.com [202.12.124.155]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3900A37F006 for ; Sat, 1 Aug 2026 00:44:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.155 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785545090; cv=none; b=Gqlma0AplZLufZZrZt96bB0GLNk/Qhb7Py/E/wxBhmWcVcKCYK6zfFCddqaawtTWLbXTg3RGwDWffUwKxzGNSs22PZQuQmK+F53mT4vxRjpjLsny+vO4ZDvcZYBBg4pHtqwGZ8d6VgLlfgY8fc0tZa6UqKzFuQFXA1ccSkbhyEc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785545090; c=relaxed/simple; bh=2AIP5OvfXf/eSn9hAecTWZvSrE1iDv9fetSoVhU9yb8=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type; b=kMxKoFznoqBaHwtJ8Ze0pMqGp39GNM5PwPvfS6/iAa9ZyfOruEP+PQT+9o3JKBpOoLedIb499YPJ3fBK4hf+ocLS0uTSuyMiPDTsb3NRC0Y5AZmw8D9fBwLEbs5szJmwxIhmgtKfarHFU4qa4I36O+ib9f24Z/hPAZwNF+guV/E= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rostedt.org; spf=pass smtp.mailfrom=rostedt.org; dkim=pass (2048-bit key) header.d=rostedt.org header.i=@rostedt.org header.b=ej+K01id; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=dL8r6iDB; arc=none smtp.client-ip=202.12.124.155 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rostedt.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rostedt.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rostedt.org header.i=@rostedt.org header.b="ej+K01id"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="dL8r6iDB" Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45]) by mailfhigh.stl.internal (Postfix) with ESMTP id B99107A00B4; Fri, 31 Jul 2026 20:44:44 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Fri, 31 Jul 2026 20:44:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rostedt.org; h= cc:cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:message-id:mime-version:reply-to :subject:subject:to:to; s=fm1; t=1785545084; x=1785631484; bh=pQ C0LsoLo1H87Yp50JUsKYsx/fkoAw8U7+r4CXpEmV0=; b=ej+K01idblLB/AxbSa Ev5Fp1MqZR5ztc6Q1h2a4cDXuuylpr5Kjqp3hf+yD1M3aDro15H8dcUZ6D1lerH5 cn+lTJXhsyiuSHGa104YLpnoSAX8xPtY77jSEiO+2EhJNmF6HEQ5LKN5svGkNcLp i5sdF/JY6IzOv137jkFf4upzqD0BkQeFTE2VNjLt64pt2jF+NU3udtqGBMMXabGA aT8NErqsX5Un/cp7+Zsz24eVKuBQjj1N973yc8lSUjuHmgDkXAshvubW3WkGdvnG gLPBpWoRnXEH9C0+dTV5q486+AsyIy+ZAwEOnz8ILH5fSdTN0f85vMZEYCbm0VBF nU3A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:message-id:mime-version:reply-to:subject :subject:to:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1785545084; x=1785631484; bh=pQC0LsoLo1H87Yp50JUsKYsx/fko Aw8U7+r4CXpEmV0=; b=dL8r6iDBQxYepVEJBQ4Gd4ElpwNYzO5GM2qWQkJBTdmX E7YiThoa6T2ChidAgDuKZCiCOzFOJwnkbBillJjAZymx1ygQvRdhSCoQEFyBPixc ZUeO8fFlq7i91M4fas0M6lMvbMN7IznM+2n5CGnlolFWthwogpycreUzNL+NqLNN wYC3xsl71ZUctWt2BJNw+39ZOs0Vqt0bT/X9N0XWbOoLvjK7lT7UWXWX5l98lpOk CKswGCrU+t7KL81NTrdviaieRSRdYPqS1Pt7watUq4FE2X0DLeAhD+j008iiBPzG 3l3643jic8+8tgPrgDLcL5AEKOH5MFdaJSnGJeiZaw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTFAemJl2tz9/ROGR3fNXAlOZ1evcqw011wT0Ak8O4rjzklhOqCrqRSXTsI84Q4IvS 0G3eCwq5Evbu1+DtuPSbVLDNrpqskKaBYN8lMyjZ4bh3E9rKlizfvp0kbngD1rI5Q0mY0m yjcBbSlK9hZ0WfwGoujBKXMTets9Rkc9LNjaOAkIYja4e57UIkguTYZBdNgj5Qyk/MxuXo rctHg1QaiOeEZhg5yrwxMCum5kbw2k7dTY3JRRMsr6oYrhuXvrYmvP1swHaKhPvMeBEd/h v+4RwcK0+QBv4qcc7OsutfXHhmFKrmzttTrt1QWO0Qew60zmnyKrggDbEtOQicU5MLACpl tD+5cDW4WUwMjzPYzaipy03rk5iU2SYb5Zln+aPyztPjAtzutLt51y/dRwj4u/ZU0w2Sp5 gQ0XOiQvTtWghVpGZmWiRK7zFckGg3shMOxkTcoXaSAksn/eQHdQQXxd7MlnhFWNDFmVwE euj3RwxmhkdNNgs3w24fa7q9UOoWre3QjkZ+MqgnhMgvXQTzpqKo4uLUG7qcarswW6+PLZ G+P1Xq3HCZMt0FJcnMXQuHKmzDIZtbJqv1WGR/lZCaJA9I1SQMkDGCavTiUM1QKymYM58w uqkyCFHu+hev3O8Owy6ldP7rOGKXnKCI9OwqluTYbMIaZx88a/f/OgkK9Q3g X-ME-Proxy: Feedback-ID: id06e481b:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 31 Jul 2026 20:44:43 -0400 (EDT) Date: Fri, 31 Jul 2026 20:44:42 -0400 From: Steven Rostedt To: Linus Torvalds Cc: LKML , "Masami Hiramatsu (Google)" , Vincent Donnefort , Mathieu Desnoyers , Andrew Morton Subject: [GIT PULL] tracing: Fixes for v7.2 Message-ID: <20260731204442.11ef0459@robin> X-Mailer: Claws Mail 4.4.0 (GTK 3.24.52; x86_64-redhat-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Linus, tracing fixes for v7.2: - Reset dropped_count in mmio_reset_data() When mmio_reset_data() is called, it does not reset the dropped_count so that subsequent runs will have incorrect reporting. - Add NULL check for mmio_trace_array in logging functions The functions __trace_mmiotrace_rw() and __trace_mmiotrace_map() may have the 'tr' variable passed to it as NULL. But they both dereference it without checking if it is NULL first. - Check return value of __register_event() in trace_module_add_events() If __register_event() fails, the call after it (__add_event_to_tracers()) will create a file for it. If the module fails to load and its memory is freed, the file will still point to it and it will not be removed as the registering of the event did not complete. Only call __add_event_to_tracers() if the __register_event() was successful. - Fix false positive match in regex_match_full() The regex full matching uses a strncmp() to test against the match string and the value. It should not match if value is a prefix of the string to match. Check to make sure the length of the strings match before comparing. - Fix reader page read offset for remote buffers A page swapped in by __rb_get_reader_page_from_remote() retains its stale read offset, causing subsequent reads to skip events or read past valid data. - Fix memory leak of subbuf_ids in rb_allocate_cpu_buffer() Remote buffers allocate a subbuf_ids array. If the allocator function fails after it is allocated, it does not free it, resulting in a memory leak. Please pull the latest trace-v7.2-rc5 tree, which can be found at: git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git trace-v7.2-rc5 Tag SHA1: f07a8527f1050765a6684e0f0fac7cc6a3ead4b0 Head SHA1: 260b20d9b78bf002f89088fb62d60e8dee98f6f8 Masami Hiramatsu (Google) (5): tracing/mmiotrace: Reset dropped_count in mmio_reset_data() tracing/mmiotrace: Add NULL check for mmio_trace_array in logging functions tracing: Check return value of __register_event() in trace_module_add_events() tracing/filters: Fix false positive match in regex_match_full() ring-buffer: Fix subbuf_ids memory leak in rb_allocate_cpu_buffer() error path Vincent Donnefort (1): ring-buffer: Fix reader page read offset for remote buffers ---- kernel/trace/ring_buffer.c | 2 ++ kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_events_filter.c | 3 +++ kernel/trace/trace_mmiotrace.c | 13 +++++++++++-- 4 files changed, 18 insertions(+), 4 deletions(-) --------------------------- diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 804ccae694d2..8e2485bb3aa8 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -2599,6 +2599,7 @@ rb_allocate_cpu_buffer(struct trace_buffer *buffer, long nr_pages, int cpu) return_ptr(cpu_buffer); fail_free_reader: + kfree(cpu_buffer->subbuf_ids); free_buffer_page(cpu_buffer->reader_page); return NULL; @@ -5783,6 +5784,7 @@ __rb_get_reader_page_from_remote(struct ring_buffer_per_cpu *cpu_buffer) cpu_buffer->head_page = new_head; cpu_buffer->reader_page = new_reader; + cpu_buffer->reader_page->read = 0; cpu_buffer->pages = &new_head->list; cpu_buffer->read_stamp = new_reader->page->time_stamp; cpu_buffer->lost_events = cpu_buffer->meta_page->reader.lost_events; diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 956692856fa8..c01b10b99f67 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -3933,8 +3933,8 @@ static void trace_module_add_events(struct module *mod) end = mod->trace_events + mod->num_trace_events; for_each_event(call, start, end) { - __register_event(*call, mod); - __add_event_to_tracers(*call); + if (!__register_event(*call, mod)) + __add_event_to_tracers(*call); } update_cache_events(mod); diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c index 6385cd662d8d..2b46ca536045 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c @@ -1027,6 +1027,9 @@ static int regex_match_full(char *str, struct regex *r, int len) if (!len) return strcmp(str, r->pattern) == 0; + if (len < r->len) + return 0; + return strncmp(str, r->pattern, len) == 0; } diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c index b88b8d9923ad..df8692c2dea8 100644 --- a/kernel/trace/trace_mmiotrace.c +++ b/kernel/trace/trace_mmiotrace.c @@ -29,6 +29,7 @@ static void mmio_reset_data(struct trace_array *tr) { overrun_detected = false; prev_overruns = 0; + atomic_set(&dropped_count, 0); tracing_reset_online_cpus(&tr->array_buffer); } @@ -293,11 +294,15 @@ device_initcall(init_mmio_trace); static void __trace_mmiotrace_rw(struct trace_array *tr, struct mmiotrace_rw *rw) { - struct trace_buffer *buffer = tr->array_buffer.buffer; + struct trace_buffer *buffer; struct ring_buffer_event *event; struct trace_mmiotrace_rw *entry; unsigned int trace_ctx; + if (!tr) + return; + + buffer = tr->array_buffer.buffer; trace_ctx = tracing_gen_ctx_flags(0); event = trace_buffer_lock_reserve(buffer, TRACE_MMIO_RW, sizeof(*entry), trace_ctx); @@ -320,11 +325,15 @@ void mmio_trace_rw(struct mmiotrace_rw *rw) static void __trace_mmiotrace_map(struct trace_array *tr, struct mmiotrace_map *map) { - struct trace_buffer *buffer = tr->array_buffer.buffer; + struct trace_buffer *buffer; struct ring_buffer_event *event; struct trace_mmiotrace_map *entry; unsigned int trace_ctx; + if (!tr) + return; + + buffer = tr->array_buffer.buffer; trace_ctx = tracing_gen_ctx_flags(0); event = trace_buffer_lock_reserve(buffer, TRACE_MMIO_MAP, sizeof(*entry), trace_ctx);