From 2199532364cd526c5b0091bb0b10c4d9b55b642a Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 3 Sep 2025 16:39:34 -0400 Subject: [PATCH] file_systems: Overlay layers only support being mounted with super volumes. Fixes #16669. --- .../layers/attribute_overlay/attribute_overlay.cpp | 3 +++ .../kernel/file_systems/layers/log_overlay/log_overlay.cpp | 3 +++ .../kernel/file_systems/layers/write_overlay/write_overlay.cpp | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/add-ons/kernel/file_systems/layers/attribute_overlay/attribute_overlay.cpp b/src/add-ons/kernel/file_systems/layers/attribute_overlay/attribute_overlay.cpp index 7c51ee8354..bab61b6bf6 100644 --- a/src/add-ons/kernel/file_systems/layers/attribute_overlay/attribute_overlay.cpp +++ b/src/add-ons/kernel/file_systems/layers/attribute_overlay/attribute_overlay.cpp @@ -1994,6 +1994,9 @@ static status_t overlay_mount(fs_volume *volume, const char *device, uint32 flags, const char *args, ino_t *rootID) { + if (volume->super_volume == NULL) + return B_UNSUPPORTED; + TRACE_VOLUME("mounting attribute overlay\n"); volume->private_volume = new(std::nothrow) OverlayVolume(volume); if (volume->private_volume == NULL) diff --git a/src/add-ons/kernel/file_systems/layers/log_overlay/log_overlay.cpp b/src/add-ons/kernel/file_systems/layers/log_overlay/log_overlay.cpp index 522971579d..b6fc32607e 100644 --- a/src/add-ons/kernel/file_systems/layers/log_overlay/log_overlay.cpp +++ b/src/add-ons/kernel/file_systems/layers/log_overlay/log_overlay.cpp @@ -1106,6 +1106,9 @@ static status_t overlay_mount(fs_volume *volume, const char *device, uint32 flags, const char *args, ino_t *rootID) { + if (volume->super_volume == NULL) + return B_UNSUPPORTED; + char filename[256]; snprintf(filename, sizeof(filename), "%s%s", kLogFilePrefix, device); filename[sizeof(filename) - 1] = 0; diff --git a/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp b/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp index a837399f02..03985e6c5d 100644 --- a/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp +++ b/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp @@ -2557,6 +2557,9 @@ static status_t overlay_mount(fs_volume *volume, const char *device, uint32 flags, const char *args, ino_t *rootID) { + if (volume->super_volume == NULL) + return B_UNSUPPORTED; + TRACE_VOLUME("mounting write overlay\n"); volume->private_volume = new(std::nothrow) OverlayVolume(volume); if (volume->private_volume == NULL)