diff --git a/mkfs.ubifs/mkfs.ubifs.c b/mkfs.ubifs/mkfs.ubifs.c
-index f77e5e6..e002be5 100644
+index 200c8a5..00b97f4 100644
--- a/mkfs.ubifs/mkfs.ubifs.c
+++ b/mkfs.ubifs/mkfs.ubifs.c
-@@ -324,6 +324,22 @@ static int in_path(const char *dir_name, const char *file_name)
+@@ -286,6 +286,22 @@ out_free:
return ret;
}
-
+
+/*
+ * same_device - determine if a file is on the same blockdevice as a directory.
+ * @dir_name: directory path name
/**
* calc_min_log_lebs - calculate the minimum number of log LEBs needed.
* @max_bud_bytes: journal size (buds only)
-@@ -376,7 +392,7 @@ static int validate_options(void)
-
+@@ -338,7 +354,7 @@ static int validate_options(void)
+
if (!output)
return err_msg("no output file or UBI volume specified");
-- if (root && in_path(root, output))
-+ if (root && same_device(root, output) && in_path(root, output))
- return err_msg("output file cannot be in the UBIFS root "
- "directory");
- if (!is_power_of_2(c->min_io_size))
+- if (root) {
++ if (root && same_device(root, output)) {
+ tmp = is_contained(output, root);
+ if (tmp < 0)
+ return err_msg("failed to perform output file root check");