v8: - Don't call vfs_path_lookup() to avoid repeat lookup, Instead, lookup last component after locking the parent that got from vfs_path_parent_lookup helper. v7: - constify struct path. - recreate patch-set base on recent Al's patches. v6: - rename __lookup_hash() to lookup_one_qstr_excl and export. - change dget() to dget_parent() in unlink. - lock parent of open file in smb2_open() to make file_present worthable. v5: - add lock_rename_child() helper. - remove d_is_symlink() check for new_path.dentry. - use lock_rename_child() helper instead of lock_rename(). - use dget() instead of dget_parent(). - check that old_child is still hashed. - directly check child->parent instead of using take_dentry_name_snapshot(). v4: - switch the order of 3/4 and 4/4 patch. - fix vfs_path_parent_lookup() parameter description mismatch. v3: - use dget_parent + take_dentry_name_snapshot() to check stability of source rename in smb2_vfs_rename(). v2: - add filename_lock to avoid racy issue from fp->filename. (Sergey Senozhatsky) - fix warning: variable 'old_dentry' is used uninitialized (kernel test robot) Al Viro (1): fs: introduce lock_rename_child() helper Namjae Jeon (2): ksmbd: remove internal.h include ksmbd: fix racy issue from using ->d_parent and ->d_name fs/internal.h | 2 - fs/ksmbd/smb2pdu.c | 147 ++++---------- fs/ksmbd/vfs.c | 435 ++++++++++++++++++------------------------ fs/ksmbd/vfs.h | 19 +- fs/ksmbd/vfs_cache.c | 5 +- fs/namei.c | 125 +++++++++--- include/linux/namei.h | 9 + 7 files changed, 342 insertions(+), 400 deletions(-) -- 2.25.1