diff options
author | Rohith Surabattula <rohiths@microsoft.com> | 2021-04-19 21:02:03 +0200 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2021-05-04 18:53:15 +0200 |
commit | 78c09634f7dc061a3bd09704cdbebb3762a45cdf (patch) | |
tree | 54a99294ff733dbf99bad6110c78e2aeb9f33151 /fs/cifs/misc.c | |
parent | cifs: fix regression when mounting shares with prefix paths (diff) | |
download | linux-78c09634f7dc061a3bd09704cdbebb3762a45cdf.tar.xz linux-78c09634f7dc061a3bd09704cdbebb3762a45cdf.zip |
Cifs: Fix kernel oops caused by deferred close for files.
Fix regression issue caused by deferred close for files.
Signed-off-by: Rohith Surabattula <rohiths@microsoft.com>
Reviewed-by: Shyam Prasad N <sprasad@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/misc.c')
-rw-r--r-- | fs/cifs/misc.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c index e63fbd4a6bfe..524dbdfb7184 100644 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c @@ -734,6 +734,23 @@ cifs_close_deferred_file(struct cifsInodeInfo *cifs_inode) } } +void +cifs_close_all_deferred_files(struct cifs_tcon *tcon) +{ + struct cifsFileInfo *cfile; + struct cifsInodeInfo *cinode; + struct list_head *tmp; + + spin_lock(&tcon->open_file_lock); + list_for_each(tmp, &tcon->openFileList) { + cfile = list_entry(tmp, struct cifsFileInfo, tlist); + cinode = CIFS_I(d_inode(cfile->dentry)); + if (delayed_work_pending(&cfile->deferred)) + mod_delayed_work(deferredclose_wq, &cfile->deferred, 0); + } + spin_unlock(&tcon->open_file_lock); +} + /* parses DFS refferal V3 structure * caller is responsible for freeing target_nodes * returns: |