// here we know it's positive
flags = path->dentry->d_flags;
need_mntput = true;
+ if (unlikely(lookup_flags & LOOKUP_NO_XDEV)) {
+ ret = -EXDEV;
+ break;
+ }
continue;
}
}
int *count, unsigned lookup_flags)
{
unsigned flags = smp_load_acquire(&path->dentry->d_flags);
- int ret;
/* fastpath */
if (likely(!(flags & DCACHE_MANAGED_DENTRY))) {
return -ENOENT;
return 0;
}
-
- ret = __traverse_mounts(path, flags, jumped, count, lookup_flags);
- if (*jumped && unlikely(lookup_flags & LOOKUP_NO_XDEV))
- return -EXDEV;
- return ret;
+ return __traverse_mounts(path, flags, jumped, count, lookup_flags);
}
int follow_down_one(struct path *path)