diff --git a/src/uu/df/src/filesystem.rs b/src/uu/df/src/filesystem.rs index 1a672642de0..e00964e03ba 100644 --- a/src/uu/df/src/filesystem.rs +++ b/src/uu/df/src/filesystem.rs @@ -74,23 +74,15 @@ pub(crate) fn find_mount_point>(path: P) -> io::Result { let mut current = path.as_ref().canonicalize()?; let current_dev = current.metadata()?.dev(); - loop { - let parent = match current.parent() { - Some(p) if !p.as_os_str().is_empty() => p, - _ => return Ok(current), - }; - + while let Some(parent) = current.parent().filter(|p| !p.as_os_str().is_empty()) { let parent_dev = parent.metadata()?.dev(); - if parent_dev != current_dev { - return Ok(current); - } - - if parent == current { + if parent_dev != current_dev || parent == current { return Ok(current); } current = parent.to_path_buf(); } + Ok(current) } /// Find the mount info that best matches a given filesystem path.