Skip to content

Commit 8ed99af

Browse files
beaubelgraveshuahkh
authored andcommitted
selftests/user_events: Fix to unmount tracefs when test created mount
Fix to unmount tracefs if the self-test mounted it to allow testing. If tracefs was already mounted, this does nothing. Suggested-by: Mark Brown <[email protected]> Link: https://lore.kernel.org/all/[email protected]/ Fixes: a06023a ("selftests/user_events: Fix failures when user_events is not installed") Signed-off-by: Beau Belgrave <[email protected]> Reviewed-by: Mark Brown <[email protected]> Signed-off-by: Shuah Khan <[email protected]>
1 parent ce9ecca commit 8ed99af

File tree

5 files changed

+34
-9
lines changed

5 files changed

+34
-9
lines changed

tools/testing/selftests/user_events/abi_test.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,18 @@ static int reg_disable(long *enable, int bit)
9191

9292
FIXTURE(user) {
9393
long check;
94+
bool umount;
9495
};
9596

9697
FIXTURE_SETUP(user) {
97-
USER_EVENT_FIXTURE_SETUP(return);
98+
USER_EVENT_FIXTURE_SETUP(return, self->umount);
9899

99100
change_event(false);
100101
self->check = 0;
101102
}
102103

103104
FIXTURE_TEARDOWN(user) {
105+
USER_EVENT_FIXTURE_TEARDOWN(self->umount);
104106
}
105107

106108
TEST_F(user, enablement) {

tools/testing/selftests/user_events/dyn_test.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,16 @@ do { \
144144

145145
FIXTURE(user) {
146146
int check;
147+
bool umount;
147148
};
148149

149150
FIXTURE_SETUP(user) {
150-
USER_EVENT_FIXTURE_SETUP(return);
151+
USER_EVENT_FIXTURE_SETUP(return, self->umount);
151152
}
152153

153154
FIXTURE_TEARDOWN(user) {
155+
USER_EVENT_FIXTURE_TEARDOWN(self->umount);
156+
154157
wait_for_delete();
155158
}
156159

tools/testing/selftests/user_events/ftrace_test.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,10 +204,11 @@ FIXTURE(user) {
204204
int data_fd;
205205
int enable_fd;
206206
int check;
207+
bool umount;
207208
};
208209

209210
FIXTURE_SETUP(user) {
210-
USER_EVENT_FIXTURE_SETUP(return);
211+
USER_EVENT_FIXTURE_SETUP(return, self->umount);
211212

212213
self->status_fd = open(status_file, O_RDONLY);
213214
ASSERT_NE(-1, self->status_fd);
@@ -219,6 +220,8 @@ FIXTURE_SETUP(user) {
219220
}
220221

221222
FIXTURE_TEARDOWN(user) {
223+
USER_EVENT_FIXTURE_TEARDOWN(self->umount);
224+
222225
close(self->status_fd);
223226
close(self->data_fd);
224227

tools/testing/selftests/user_events/perf_test.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,16 +111,19 @@ static int clear(int *check)
111111
FIXTURE(user) {
112112
int data_fd;
113113
int check;
114+
bool umount;
114115
};
115116

116117
FIXTURE_SETUP(user) {
117-
USER_EVENT_FIXTURE_SETUP(return);
118+
USER_EVENT_FIXTURE_SETUP(return, self->umount);
118119

119120
self->data_fd = open(data_file, O_RDWR);
120121
ASSERT_NE(-1, self->data_fd);
121122
}
122123

123124
FIXTURE_TEARDOWN(user) {
125+
USER_EVENT_FIXTURE_TEARDOWN(self->umount);
126+
124127
close(self->data_fd);
125128

126129
if (clear(&self->check) != 0)

tools/testing/selftests/user_events/user_events_selftests.h

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,19 @@
1111

1212
#include "../kselftest.h"
1313

14-
static inline bool tracefs_enabled(char **message, bool *fail)
14+
static inline void tracefs_unmount(void)
15+
{
16+
umount("/sys/kernel/tracing");
17+
}
18+
19+
static inline bool tracefs_enabled(char **message, bool *fail, bool *umount)
1520
{
1621
struct stat buf;
1722
int ret;
1823

1924
*message = "";
2025
*fail = false;
26+
*umount = false;
2127

2228
/* Ensure tracefs is installed */
2329
ret = stat("/sys/kernel/tracing", &buf);
@@ -37,6 +43,8 @@ static inline bool tracefs_enabled(char **message, bool *fail)
3743
return false;
3844
}
3945

46+
*umount = true;
47+
4048
ret = stat("/sys/kernel/tracing/README", &buf);
4149
}
4250

@@ -49,21 +57,22 @@ static inline bool tracefs_enabled(char **message, bool *fail)
4957
return true;
5058
}
5159

52-
static inline bool user_events_enabled(char **message, bool *fail)
60+
static inline bool user_events_enabled(char **message, bool *fail, bool *umount)
5361
{
5462
struct stat buf;
5563
int ret;
5664

5765
*message = "";
5866
*fail = false;
67+
*umount = false;
5968

6069
if (getuid() != 0) {
6170
*message = "Must be run as root";
6271
*fail = true;
6372
return false;
6473
}
6574

66-
if (!tracefs_enabled(message, fail))
75+
if (!tracefs_enabled(message, fail, umount))
6776
return false;
6877

6978
/* Ensure user_events is installed */
@@ -85,10 +94,10 @@ static inline bool user_events_enabled(char **message, bool *fail)
8594
return true;
8695
}
8796

88-
#define USER_EVENT_FIXTURE_SETUP(statement) do { \
97+
#define USER_EVENT_FIXTURE_SETUP(statement, umount) do { \
8998
char *message; \
9099
bool fail; \
91-
if (!user_events_enabled(&message, &fail)) { \
100+
if (!user_events_enabled(&message, &fail, &(umount))) { \
92101
if (fail) { \
93102
TH_LOG("Setup failed due to: %s", message); \
94103
ASSERT_FALSE(fail); \
@@ -97,4 +106,9 @@ static inline bool user_events_enabled(char **message, bool *fail)
97106
} \
98107
} while (0)
99108

109+
#define USER_EVENT_FIXTURE_TEARDOWN(umount) do { \
110+
if ((umount)) \
111+
tracefs_unmount(); \
112+
} while (0)
113+
100114
#endif /* _USER_EVENTS_SELFTESTS_H */

0 commit comments

Comments
 (0)