-
Notifications
You must be signed in to change notification settings - Fork 48
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'linux-kselftest-fixes-6.6-rc2' of git://git.kernel.org/pub…
…/scm/linux/kernel/git/shuah/linux-kselftest Pull more kselftest fixes from Shuah Khan "Fixes to user_events test and ftrace test. The user_events test was enabled by default in Linux 6.6-rc1. The following fixes are for bugs found since then: - add checks for dependencies and skip the test if they aren't met. The user_events test requires root access, and tracefs and user_events enabled. It leaves tracefs mounted and a fix is in progress for that missing piece. - create user_events test-specific Kconfig fragments ftrace test fixes: - unmount tracefs for recovering environment. Fix identified during the above mentioned user_events dependencies fix. - adds softlink to latest log directory improving usage" * tag 'linux-kselftest-fixes-6.6-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: selftests: tracing: Fix to unmount tracefs for recovering environment selftests: user_events: create test-specific Kconfig fragments ftrace/selftests: Add softlink to latest log directory selftests/user_events: Fix failures when user_events is not installed
- Loading branch information
Showing
7 changed files
with
129 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
CONFIG_USER_EVENTS=y |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
100 changes: 100 additions & 0 deletions
100
tools/testing/selftests/user_events/user_events_selftests.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
|
||
#ifndef _USER_EVENTS_SELFTESTS_H | ||
#define _USER_EVENTS_SELFTESTS_H | ||
|
||
#include <sys/stat.h> | ||
#include <sys/types.h> | ||
#include <sys/mount.h> | ||
#include <unistd.h> | ||
#include <errno.h> | ||
|
||
#include "../kselftest.h" | ||
|
||
static inline bool tracefs_enabled(char **message, bool *fail) | ||
{ | ||
struct stat buf; | ||
int ret; | ||
|
||
*message = ""; | ||
*fail = false; | ||
|
||
/* Ensure tracefs is installed */ | ||
ret = stat("/sys/kernel/tracing", &buf); | ||
|
||
if (ret == -1) { | ||
*message = "Tracefs is not installed"; | ||
return false; | ||
} | ||
|
||
/* Ensure mounted tracefs */ | ||
ret = stat("/sys/kernel/tracing/README", &buf); | ||
|
||
if (ret == -1 && errno == ENOENT) { | ||
if (mount(NULL, "/sys/kernel/tracing", "tracefs", 0, NULL) != 0) { | ||
*message = "Cannot mount tracefs"; | ||
*fail = true; | ||
return false; | ||
} | ||
|
||
ret = stat("/sys/kernel/tracing/README", &buf); | ||
} | ||
|
||
if (ret == -1) { | ||
*message = "Cannot access tracefs"; | ||
*fail = true; | ||
return false; | ||
} | ||
|
||
return true; | ||
} | ||
|
||
static inline bool user_events_enabled(char **message, bool *fail) | ||
{ | ||
struct stat buf; | ||
int ret; | ||
|
||
*message = ""; | ||
*fail = false; | ||
|
||
if (getuid() != 0) { | ||
*message = "Must be run as root"; | ||
*fail = true; | ||
return false; | ||
} | ||
|
||
if (!tracefs_enabled(message, fail)) | ||
return false; | ||
|
||
/* Ensure user_events is installed */ | ||
ret = stat("/sys/kernel/tracing/user_events_data", &buf); | ||
|
||
if (ret == -1) { | ||
switch (errno) { | ||
case ENOENT: | ||
*message = "user_events is not installed"; | ||
return false; | ||
|
||
default: | ||
*message = "Cannot access user_events_data"; | ||
*fail = true; | ||
return false; | ||
} | ||
} | ||
|
||
return true; | ||
} | ||
|
||
#define USER_EVENT_FIXTURE_SETUP(statement) do { \ | ||
char *message; \ | ||
bool fail; \ | ||
if (!user_events_enabled(&message, &fail)) { \ | ||
if (fail) { \ | ||
TH_LOG("Setup failed due to: %s", message); \ | ||
ASSERT_FALSE(fail); \ | ||
} \ | ||
SKIP(statement, "Skipping due to: %s", message); \ | ||
} \ | ||
} while (0) | ||
|
||
#endif /* _USER_EVENTS_SELFTESTS_H */ |