From 504f065fe20c6db0f4419dd3ef990d2a61df37c3 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 9 Aug 2017 14:40:46 +0100 Subject: lib/debugfs: Make is_mountpoint() non-fatal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit is_mountpoint() asserts rather than report the error. Normally this isn't a problem, except for atypical selftests. Signed-off-by: Chris Wilson Reviewed-by: Ville Syrjälä --- lib/igt_debugfs.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) (limited to 'lib/igt_debugfs.c') diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c index 63a0989e..40cfd87a 100644 --- a/lib/igt_debugfs.c +++ b/lib/igt_debugfs.c @@ -88,18 +88,26 @@ static bool is_mountpoint(const char *path) { char buf[strlen(path) + 4]; - dev_t dot_dev, dotdot_dev; struct stat st; + dev_t dev; igt_assert_lt(snprintf(buf, sizeof(buf), "%s/.", path), sizeof(buf)); - igt_assert_eq(stat(buf, &st), 0); - dot_dev = st.st_dev; + if (stat(buf, &st)) + return false; + + if (!S_ISDIR(st.st_mode)) + return false; + + dev = st.st_dev; igt_assert_lt(snprintf(buf, sizeof(buf), "%s/..", path), sizeof(buf)); - igt_assert_eq(stat(buf, &st), 0); - dotdot_dev = st.st_dev; + if (stat(buf, &st)) + return false; + + if (!S_ISDIR(st.st_mode)) + return false; - return dot_dev != dotdot_dev; + return dev != st.st_dev; } /** @@ -113,16 +121,14 @@ static bool is_mountpoint(const char *path) */ const char *igt_debugfs_mount(void) { - struct stat st; + if (is_mountpoint("/sys/kernel/debug")) + return "/sys/kernel/debug"; - if (stat("/debug/dri", &st) == 0) + if (is_mountpoint("/debug")) return "/debug"; - if (stat("/sys/kernel/debug/dri", &st) == 0) - return "/sys/kernel/debug"; - - igt_assert(is_mountpoint("/sys/kernel/debug") || - mount("debug", "/sys/kernel/debug", "debugfs", 0, 0) == 0); + if (mount("debug", "/sys/kernel/debug", "debugfs", 0, 0)) + return NULL; return "/sys/kernel/debug"; } @@ -155,6 +161,7 @@ char *igt_debugfs_path(int device, char *path, int pathlen) } debugfs_root = igt_debugfs_mount(); + igt_assert(debugfs_root); idx = minor(st.st_rdev); snprintf(path, pathlen, "%s/dri/%d/name", debugfs_root, idx); -- cgit v1.2.3