diff options
Diffstat (limited to 'fs/smb/client/readdir.c')
| -rw-r--r-- | fs/smb/client/readdir.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/smb/client/readdir.c b/fs/smb/client/readdir.c index 1311caa93fee..07aa3cb0c4a6 100644 --- a/fs/smb/client/readdir.c +++ b/fs/smb/client/readdir.c @@ -963,6 +963,10 @@ int cifs_readdir(struct file *file, struct dir_context *ctx) if (!cdir) { pr_err("%s: (1) cdir not found for path='%s' (unexpected because remote open)\n", __func__, full_path); goto cache_not_found; + } else if (IS_ERR(cdir)) { + rc = PTR_ERR(cdir); + cdir = NULL; + goto rddir2_exit; } if (!cached_dir_emit_entries(cdir, ctx, file)) @@ -1017,6 +1021,10 @@ int cifs_readdir(struct file *file, struct dir_context *ctx) if (!cdir) { pr_err("%s: (2) cdir not found for path='%s' (unexpected because remote open)\n", __func__, full_path); goto rddir2_exit; + } else if (IS_ERR(cdir)) { + rc = PTR_ERR(cdir); + cdir = NULL; + goto rddir2_exit; } if (!current_entry) { |
