summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEnzo Matsumiya <ematsumiya@suse.de>2025-09-08 17:47:57 -0300
committerEnzo Matsumiya <ematsumiya@suse.de>2025-09-11 17:59:59 -0300
commit00ed7686fb2b7f745f62fbc0a0a6301c4ec04d9c (patch)
treeb871ceff7f6056e4060ad0bd862e5883af88ba57
parentead10532fb5ecd150cd94ab57649cc92bff5d4bc (diff)
downloadlinux-00ed7686fb2b7f745f62fbc0a0a6301c4ec04d9c.tar.gz
linux-00ed7686fb2b7f745f62fbc0a0a6301c4ec04d9c.tar.bz2
linux-00ed7686fb2b7f745f62fbc0a0a6301c4ec04d9c.zip
smb: client: merge free_cached_dir in release callback
free_cached_dir() is no longer used anywhere else. Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
-rw-r--r--fs/smb/client/cached_dir.c39
1 files changed, 11 insertions, 28 deletions
diff --git a/fs/smb/client/cached_dir.c b/fs/smb/client/cached_dir.c
index 1da4e1d83728..d821b3a947ae 100644
--- a/fs/smb/client/cached_dir.c
+++ b/fs/smb/client/cached_dir.c
@@ -13,7 +13,6 @@
#include "cached_dir.h"
static struct cached_fid *init_cached_dir(const char *path);
-static void free_cached_dir(struct cached_fid *cfid);
static void smb2_close_cached_fid(struct kref *ref);
static inline bool cfid_expired(const struct cached_fid *cfid)
@@ -448,6 +447,7 @@ smb2_close_cached_fid(struct kref *ref)
{
struct cached_fid *cfid = container_of(ref, struct cached_fid, refcount);
struct cached_fids *cfids = cfid->cfids;
+ struct cached_dirent *dirent, *q;
struct dentry *dentry = NULL;
spin_lock(&cfids->cfid_list_lock);
@@ -461,7 +461,16 @@ smb2_close_cached_fid(struct kref *ref)
dput(dentry);
- free_cached_dir(cfid);
+ /* Delete all cached dirent names */
+ list_for_each_entry_safe(dirent, q, &cfid->dirents.entries, entry) {
+ list_del(&dirent->entry);
+ kfree(dirent->name);
+ kfree(dirent);
+ }
+
+ kfree(cfid->path);
+ cfid->path = NULL;
+ kfree(cfid);
}
void drop_cached_dir_by_name(const unsigned int xid, struct cifs_tcon *tcon,
@@ -602,32 +611,6 @@ static struct cached_fid *init_cached_dir(const char *path)
return cfid;
}
-static void free_cached_dir(struct cached_fid *cfid)
-{
- struct cached_dirent *dirent, *q;
- struct dentry *dentry;
-
- spin_lock(&cfid->fid_lock);
- dentry = cfid->dentry;
- cfid->dentry = NULL;
- spin_unlock(&cfid->fid_lock);
-
- dput(dentry);
-
- /*
- * Delete all cached dirent names
- */
- list_for_each_entry_safe(dirent, q, &cfid->dirents.entries, entry) {
- list_del(&dirent->entry);
- kfree(dirent->name);
- kfree(dirent);
- }
-
- kfree(cfid->path);
- cfid->path = NULL;
- kfree(cfid);
-}
-
static void cfids_laundromat_worker(struct work_struct *work)
{
struct cached_fids *cfids;