summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJori Koolstra <jkoolstra@xs4all.nl>2026-05-28 17:58:46 +0000
committerChristian Brauner <brauner@kernel.org>2026-05-29 09:47:02 +0200
commitf2f1dddccae50f7a1d088285c53c376e26cedf67 (patch)
treef60f94262825438ae6a6df1542e7f39caf423207 /include
parent8c47b5e9b9f4a861a87e40d5294de7fda548fa37 (diff)
downloadlwn-f2f1dddccae50f7a1d088285c53c376e26cedf67.tar.gz
lwn-f2f1dddccae50f7a1d088285c53c376e26cedf67.zip
vfs: make LAST_XXX private to fs/namei.c
The only user of LAST_XXX outside of fs/namei.c is fs/smb/server/vfs.c; ksmbd_vfs_path_lookup() calls vfs_path_parent_lookup() and expects a LAST_NORM last type (or it will be ENOENT). ksmbd_vfs_rename() also calls vfs_path_parent_lookup() but forgets the LAST_NORM check. It does not really make sense to have vfs_path_parent_lookup() expose the last_type because it is only needed to ensure it is LAST_NORM. So let's do this check in vfs_path_parent_lookup() instead and keep the LAST_XXX internal to fs/namei.c. This changes the ENOENT errno in ksmbd_vfs_path_lookup() to EINVAL, which matches better with how this is handled by callers of filename_parentat(). Signed-off-by: Jori Koolstra <jkoolstra@xs4all.nl> Link: https://patch.msgid.link/20260528175854.57626-1-jkoolstra@xs4all.nl Reviewed-by: Amir Goldstein <amir73il@gmail.com> Reviewed-by: NeilBrown <neil@brown.name> Reviewed-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/namei.h7
1 files changed, 1 insertions, 6 deletions
diff --git a/include/linux/namei.h b/include/linux/namei.h
index 2ad6dd9987b9..3941b9f1dec7 100644
--- a/include/linux/namei.h
+++ b/include/linux/namei.h
@@ -13,11 +13,6 @@ enum { MAX_NESTED_LINKS = 8 };
#define MAXSYMLINKS 40
-/*
- * Type of the last component on LOOKUP_PARENT
- */
-enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT};
-
/* pathwalk mode */
#define LOOKUP_FOLLOW BIT(0) /* follow links at the end */
#define LOOKUP_DIRECTORY BIT(1) /* require a directory */
@@ -67,7 +62,7 @@ static inline void end_removing_path(const struct path *path , struct dentry *de
end_creating_path(path, dentry);
}
int vfs_path_parent_lookup(struct filename *filename, unsigned int flags,
- struct path *parent, struct qstr *last, int *type,
+ struct path *parent, struct qstr *last,
const struct path *root);
int vfs_path_lookup(struct dentry *, struct vfsmount *, const char *,
unsigned int, struct path *);