From afbb9049da874e06adc4ea8d7c544543b0e9f306 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Sat, 13 Jul 2019 23:43:25 +0200 Subject: [PATCH] main: check immediately if mknod is usable Signed-off-by: Giuseppe Scrivano --- main.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/main.c b/main.c index 1a58f35..59053c8 100644 --- a/main.c +++ b/main.c @@ -312,6 +312,22 @@ strconcat3 (char *dest, size_t size, const char *s1, const char *s2, const char return current - dest; } +static void +check_can_mknod (struct ovl_data *lo) +{ + int ret; + char path[PATH_MAX]; + + sprintf (path, "%lu", get_next_wd_counter ()); + + ret = mknodat (lo->workdir_fd, path, S_IFCHR|0700, makedev (0, 0)); + if (ret == 0) + unlinkat (lo->workdir_fd, path, 0); + if (ret < 0 && errno == EPERM) + can_mknod = false; +} + + static struct ovl_mapping * read_mappings (const char *str) { @@ -4056,6 +4072,7 @@ main (int argc, char *argv[]) } set_limits (); + check_can_mknod (&lo); if (lo.debug) {