diff --git a/meta/classes-recipe/cargo-update-recipe-crates.bbclass b/meta/classes-recipe/cargo-update-recipe-crates.bbclass
index daa363b0dd..549cfe627e 100644
--- a/meta/classes-recipe/cargo-update-recipe-crates.bbclass
+++ b/meta/classes-recipe/cargo-update-recipe-crates.bbclass
@@ -68,10 +68,14 @@ def get_crates(f):
 import os
 crates = "# Autogenerated with 'bitbake -c update_crates ${PN}'\n\n"
 found = False
-for root, dirs, files in os.walk('${CARGO_LOCK_SRC_DIR}'):
-    for file in files:
-        if file == 'Cargo.lock':
-            crates += get_crates(os.path.join(root, file))
+for file in os.listdir('${CARGO_LOCK_SRC_DIR}'):
+    if file == 'Cargo.lock':
+        try:
+            cargo_lock_path = os.path.join('${CARGO_LOCK_SRC_DIR}', file)
+            crates += get_crates(cargo_lock_path)
+        except Exception as e:
+            raise ValueError("Cannot parse '%s'" % cargo_lock_path) from e
+        else:
             found = True
 if not found:
     raise ValueError("Unable to find Cargo.lock in ${CARGO_LOCK_SRC_DIR}")
