Message ID | 20240423162338.292-3-beaub@linux.microsoft.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | tracing/user_events: Fix non-spaced field matching | expand |
On Tue, 23 Apr 2024 16:23:38 +0000 Beau Belgrave <beaub@linux.microsoft.com> wrote: > The ABI documentation indicates that field separators do not need a > space between them, only a ';'. When no spacing is used, the register > must work. Any subsequent register, with or without spaces, must match > and not return -EADDRINUSE. > > Add a non-spacing separator case to our self-test register case to ensure > it works going forward. > Looks good to me. Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Thanks! > Signed-off-by: Beau Belgrave <beaub@linux.microsoft.com> > --- > tools/testing/selftests/user_events/ftrace_test.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/tools/testing/selftests/user_events/ftrace_test.c b/tools/testing/selftests/user_events/ftrace_test.c > index dcd7509fe2e0..0bb46793dcd4 100644 > --- a/tools/testing/selftests/user_events/ftrace_test.c > +++ b/tools/testing/selftests/user_events/ftrace_test.c > @@ -261,6 +261,12 @@ TEST_F(user, register_events) { > ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSREG, ®)); > ASSERT_EQ(0, reg.write_index); > > + /* Register without separator spacing should still match */ > + reg.enable_bit = 29; > + reg.name_args = (__u64)"__test_event u32 field1;u32 field2"; > + ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSREG, ®)); > + ASSERT_EQ(0, reg.write_index); > + > /* Multiple registers to same name but different args should fail */ > reg.enable_bit = 29; > reg.name_args = (__u64)"__test_event u32 field1;"; > @@ -288,6 +294,8 @@ TEST_F(user, register_events) { > ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSUNREG, &unreg)); > unreg.disable_bit = 30; > ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSUNREG, &unreg)); > + unreg.disable_bit = 29; > + ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSUNREG, &unreg)); > > /* Delete should have been auto-done after close and unregister */ > close(self->data_fd); > -- > 2.34.1 >
diff --git a/tools/testing/selftests/user_events/ftrace_test.c b/tools/testing/selftests/user_events/ftrace_test.c index dcd7509fe2e0..0bb46793dcd4 100644 --- a/tools/testing/selftests/user_events/ftrace_test.c +++ b/tools/testing/selftests/user_events/ftrace_test.c @@ -261,6 +261,12 @@ TEST_F(user, register_events) { ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSREG, ®)); ASSERT_EQ(0, reg.write_index); + /* Register without separator spacing should still match */ + reg.enable_bit = 29; + reg.name_args = (__u64)"__test_event u32 field1;u32 field2"; + ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSREG, ®)); + ASSERT_EQ(0, reg.write_index); + /* Multiple registers to same name but different args should fail */ reg.enable_bit = 29; reg.name_args = (__u64)"__test_event u32 field1;"; @@ -288,6 +294,8 @@ TEST_F(user, register_events) { ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSUNREG, &unreg)); unreg.disable_bit = 30; ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSUNREG, &unreg)); + unreg.disable_bit = 29; + ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSUNREG, &unreg)); /* Delete should have been auto-done after close and unregister */ close(self->data_fd);
The ABI documentation indicates that field separators do not need a space between them, only a ';'. When no spacing is used, the register must work. Any subsequent register, with or without spaces, must match and not return -EADDRINUSE. Add a non-spacing separator case to our self-test register case to ensure it works going forward. Signed-off-by: Beau Belgrave <beaub@linux.microsoft.com> --- tools/testing/selftests/user_events/ftrace_test.c | 8 ++++++++ 1 file changed, 8 insertions(+)