Commit 50768a42 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'linux-kselftest-fixes-6.6-rc4' of...

Merge tag 'linux-kselftest-fixes-6.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest

Pull kselftest fix from Shuah Khan:
 "One single fix to unmount tracefs when test created mount"

* tag 'linux-kselftest-fixes-6.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
  selftests/user_events: Fix to unmount tracefs when test created mount
parents 84422aee 8ed99af4
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -91,16 +91,18 @@ static int reg_disable(long *enable, int bit)

FIXTURE(user) {
	long check;
	bool umount;
};

FIXTURE_SETUP(user) {
	USER_EVENT_FIXTURE_SETUP(return);
	USER_EVENT_FIXTURE_SETUP(return, self->umount);

	change_event(false);
	self->check = 0;
}

FIXTURE_TEARDOWN(user) {
	USER_EVENT_FIXTURE_TEARDOWN(self->umount);
}

TEST_F(user, enablement) {
+4 −1
Original line number Diff line number Diff line
@@ -144,13 +144,16 @@ do { \

FIXTURE(user) {
	int check;
	bool umount;
};

FIXTURE_SETUP(user) {
	USER_EVENT_FIXTURE_SETUP(return);
	USER_EVENT_FIXTURE_SETUP(return, self->umount);
}

FIXTURE_TEARDOWN(user) {
	USER_EVENT_FIXTURE_TEARDOWN(self->umount);

	wait_for_delete();
}

+4 −1
Original line number Diff line number Diff line
@@ -204,10 +204,11 @@ FIXTURE(user) {
	int data_fd;
	int enable_fd;
	int check;
	bool umount;
};

FIXTURE_SETUP(user) {
	USER_EVENT_FIXTURE_SETUP(return);
	USER_EVENT_FIXTURE_SETUP(return, self->umount);

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

FIXTURE_TEARDOWN(user) {
	USER_EVENT_FIXTURE_TEARDOWN(self->umount);

	close(self->status_fd);
	close(self->data_fd);

+4 −1
Original line number Diff line number Diff line
@@ -111,16 +111,19 @@ static int clear(int *check)
FIXTURE(user) {
	int data_fd;
	int check;
	bool umount;
};

FIXTURE_SETUP(user) {
	USER_EVENT_FIXTURE_SETUP(return);
	USER_EVENT_FIXTURE_SETUP(return, self->umount);

	self->data_fd = open(data_file, O_RDWR);
	ASSERT_NE(-1, self->data_fd);
}

FIXTURE_TEARDOWN(user) {
	USER_EVENT_FIXTURE_TEARDOWN(self->umount);

	close(self->data_fd);

	if (clear(&self->check) != 0)
+19 −5
Original line number Diff line number Diff line
@@ -11,13 +11,19 @@

#include "../kselftest.h"

static inline bool tracefs_enabled(char **message, bool *fail)
static inline void tracefs_unmount(void)
{
	umount("/sys/kernel/tracing");
}

static inline bool tracefs_enabled(char **message, bool *fail, bool *umount)
{
	struct stat buf;
	int ret;

	*message = "";
	*fail = false;
	*umount = false;

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

		*umount = true;

		ret = stat("/sys/kernel/tracing/README", &buf);
	}

@@ -49,13 +57,14 @@ static inline bool tracefs_enabled(char **message, bool *fail)
	return true;
}

static inline bool user_events_enabled(char **message, bool *fail)
static inline bool user_events_enabled(char **message, bool *fail, bool *umount)
{
	struct stat buf;
	int ret;

	*message = "";
	*fail = false;
	*umount = false;

	if (getuid() != 0) {
		*message = "Must be run as root";
@@ -63,7 +72,7 @@ static inline bool user_events_enabled(char **message, bool *fail)
		return false;
	}

	if (!tracefs_enabled(message, fail))
	if (!tracefs_enabled(message, fail, umount))
		return false;

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

#define USER_EVENT_FIXTURE_SETUP(statement) do { \
#define USER_EVENT_FIXTURE_SETUP(statement, umount) do { \
	char *message; \
	bool fail; \
	if (!user_events_enabled(&message, &fail)) { \
	if (!user_events_enabled(&message, &fail, &(umount))) { \
		if (fail) { \
			TH_LOG("Setup failed due to: %s", message); \
			ASSERT_FALSE(fail); \
@@ -97,4 +106,9 @@ static inline bool user_events_enabled(char **message, bool *fail)
	} \
} while (0)

#define USER_EVENT_FIXTURE_TEARDOWN(umount) do { \
	if ((umount))  \
		tracefs_unmount(); \
} while (0)

#endif /* _USER_EVENTS_SELFTESTS_H */