diff options
| author | Enzo Matsumiya <ematsumiya@suse.de> | 2025-09-08 17:47:57 -0300 |
|---|---|---|
| committer | Enzo Matsumiya <ematsumiya@suse.de> | 2025-09-11 17:59:59 -0300 |
| commit | 00ed7686fb2b7f745f62fbc0a0a6301c4ec04d9c (patch) | |
| tree | b871ceff7f6056e4060ad0bd862e5883af88ba57 | |
| parent | ead10532fb5ecd150cd94ab57649cc92bff5d4bc (diff) | |
| download | linux-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.c | 39 |
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; |
