From nobody Mon Feb 9 11:26:55 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D579EEB64D7 for ; Wed, 28 Jun 2023 15:06:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231886AbjF1PGS (ORCPT ); Wed, 28 Jun 2023 11:06:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58122 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231980AbjF1PGL (ORCPT ); Wed, 28 Jun 2023 11:06:11 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 220C710FD for ; Wed, 28 Jun 2023 08:06:10 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id AB68361353 for ; Wed, 28 Jun 2023 15:06:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DC809C433C0; Wed, 28 Jun 2023 15:06:07 +0000 (UTC) Date: Wed, 28 Jun 2023 11:06:04 -0400 From: Steven Rostedt To: Linus Torvalds Cc: LKML , Masami Hiramatsu , Mark Rutland , sunliming , Beau Belgrave Subject: [GIT PULL v3] tracing: tracing: user_event fix for 6.4 Message-ID: <20230628110604.5cf29440@rorschach.local.home> X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Linus, tracing: Fix user event write on buffer disabled The user events write currently returns the size of what was suppose to be written when tracing is disabled and nothing was written. Instead, behave l= ike trace_marker and return -EBADF, as that is what is returned if a file is op= ened for read only, and a write is performed on it. Writing to the buffer that is disabled is like trying to write to a file opened for read only, as the buffer still can be read, but just not written to. This also includes test cases for this use case Please pull the latest trace-v6.4-rc7-v3 tree, which can be found at: git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git trace-v6.4-rc7-v3 Tag SHA1: e50c9719e4ccc09a792544dee295b09f16877544 Head SHA1: d34a271accf8fad00e05aad2cecb9fb53a840a94 sunliming (3): tracing/user_events: Fix incorrect return value for writing operation= when events are disabled selftests/user_events: Enable the event before write_fault test in ft= race self-test selftests/user_events: Add test cases when event is disabled ---- kernel/trace/trace_events_user.c | 3 ++- tools/testing/selftests/user_events/ftrace_test.c | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) --------------------------- diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_u= ser.c index 8df0550415e7..09f7d9167b8e 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -2096,7 +2096,8 @@ static ssize_t user_events_write_core(struct file *fi= le, struct iov_iter *i) =20 if (unlikely(faulted)) return -EFAULT; - } + } else + return -EBADF; =20 return ret; } diff --git a/tools/testing/selftests/user_events/ftrace_test.c b/tools/test= ing/selftests/user_events/ftrace_test.c index eb6904d89f14..5beb0aef1d81 100644 --- a/tools/testing/selftests/user_events/ftrace_test.c +++ b/tools/testing/selftests/user_events/ftrace_test.c @@ -324,6 +324,10 @@ TEST_F(user, write_events) { io[0].iov_base =3D ®.write_index; io[0].iov_len =3D sizeof(reg.write_index); =20 + /* Write should return -EBADF when event is not enabled */ + ASSERT_EQ(-1, writev(self->data_fd, (const struct iovec *)io, 3)); + ASSERT_EQ(EBADF, errno); + /* Enable event */ self->enable_fd =3D open(enable_file, O_RDWR); ASSERT_NE(-1, write(self->enable_fd, "1", sizeof("1"))) @@ -400,6 +404,10 @@ TEST_F(user, write_fault) { ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSREG, ®)); ASSERT_EQ(0, reg.write_index); =20 + /* Enable event */ + self->enable_fd =3D open(enable_file, O_RDWR); + ASSERT_NE(-1, write(self->enable_fd, "1", sizeof("1"))) + /* Write should work normally */ ASSERT_NE(-1, writev(self->data_fd, (const struct iovec *)io, 2));