From 89264cfe2e0329f173fa9a134e9d3457290b3497 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 21 Oct 2024 16:22:05 +0200 Subject: [PATCH] kernel/legacy_drivers: reverse order of search for kernel add-ons MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * DirectoryIterator uses a stack to hold the paths values, pushed in SetTo(), then popped with GetNext(). So the path directories have to added in reverse order. * fix #17264 Change-Id: I728365f069071f109c79e647d6a33cd24f68ce0e Reviewed-on: https://review.haiku-os.org/c/haiku/+/8498 Tested-by: Commit checker robot Haiku-Format: Haiku-format Bot Reviewed-by: Jérôme Duval --- src/system/kernel/device_manager/legacy_drivers.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/system/kernel/device_manager/legacy_drivers.cpp b/src/system/kernel/device_manager/legacy_drivers.cpp index a53c595548..57feb12571 100644 --- a/src/system/kernel/device_manager/legacy_drivers.cpp +++ b/src/system/kernel/device_manager/legacy_drivers.cpp @@ -939,14 +939,12 @@ DirectoryIterator::SetTo(const char* path, const char* subPath, bool recursive) Unset(); fRecursive = recursive; + const bool disableUserAddOns = get_safemode_boolean(B_SAFEMODE_DISABLE_USER_ADD_ONS, false); + if (path == NULL) { - // add default paths + // add default paths in reverse order as AddPath() will add on a stack KPath pathBuffer; - - bool disableUserAddOns = get_safemode_boolean( - B_SAFEMODE_DISABLE_USER_ADD_ONS, false); - - for (uint32 i = 0; i < sizeof(kDriverPaths) / sizeof(kDriverPaths[0]); i++) { + for (int32 i = B_COUNT_OF(kDriverPaths) - 1; i >= 0; i--) { if (i < 3 && disableUserAddOns) continue;