diff options
Diffstat (limited to 'fs/smb/client/cached_dir.c')
| -rw-r--r-- | fs/smb/client/cached_dir.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/smb/client/cached_dir.c b/fs/smb/client/cached_dir.c index 9b769a7e192d..361f9529ea8a 100644 --- a/fs/smb/client/cached_dir.c +++ b/fs/smb/client/cached_dir.c @@ -299,12 +299,9 @@ replay_again: } cfid->cfids = cfids; - cfids->num_entries++; - list_add(&cfid->entry, &cfids->entries); + cfid->tcon = tcon; spin_unlock(&cfids->cfid_list_lock); - pfid = &cfid->fid; - /* * Skip any prefix paths in @path as lookup_noperm_positive_unlocked() ends up * calling ->lookup() which already adds those through @@ -332,6 +329,13 @@ replay_again: cfid->tcon = tcon; dentry = NULL; + spin_lock(&cfids->cfid_list_lock); + cfids->num_entries++; + list_add(&cfid->entry, &cfids->entries); + spin_unlock(&cfids->cfid_list_lock); + + pfid = &cfid->fid; + /* * We do not hold the lock for the open because in case * SMB2_open needs to reconnect. |
