diff --git a/src/overlay.cpp b/src/overlay.cpp
index 4cb3181..966bfd1 100644
--- a/src/overlay.cpp
+++ b/src/overlay.cpp
@@ -167,40 +167,16 @@
         return false;
     }
 
-    std::string dirName = deviceDirName(*bus, *address);
+    std::filesystem::path dirPath = busPath;
+    dirPath /= deviceDirName(*bus, *address);
+    if (createsHWMon)
+    {
+        dirPath /= "hwmon";
+    }
 
     std::error_code ec;
-    auto path = std::filesystem::recursive_directory_iterator(busPath, ec);
-    if (ec)
-    {
-        std::cerr << "Unable to open path " << busPath << "\n";
-        return false;
-    }
-    for (; path != std::filesystem::recursive_directory_iterator(); path++)
-    {
-        if (!std::filesystem::is_directory(*path))
-        {
-            continue;
-        }
-
-        const std::string foundName = path->path().filename();
-        if (foundName == dirName)
-        {
-            // Look for a .../hwmon subdirectory for devices that are expected
-            // to have one.
-            if (createsHWMon)
-            {
-                std::error_code ec;
-                std::filesystem::path hwmonDir(busPath);
-                hwmonDir /= dirName;
-                hwmonDir /= "hwmon";
-                return std::filesystem::is_directory(hwmonDir, ec);
-            }
-            return true;
-        }
-        path.disable_recursion_pending();
-    }
-    return false;
+    // Ignore errors; anything but a clean 'true' is just fine as 'false'
+    return std::filesystem::exists(dirPath, ec);
 }
 
 static int buildDevice(const std::string& busPath,
