summaryrefslogtreecommitdiffstats
path: root/fs/ksmbd
diff options
context:
space:
mode:
authorHyunchul Lee <hyc.lee@gmail.com>2021-07-09 10:06:33 +0200
committerNamjae Jeon <namjae.jeon@samsung.com>2021-07-10 09:23:58 +0200
commitce154c32af3c60727171ff28ae97bcceda63b1c6 (patch)
tree6884b98757042e1f74a6a4b17bb9b69e1a0f9d51 /fs/ksmbd
parentksmbd: uninterruptible wait for a file being unlocked (diff)
downloadlinux-ce154c32af3c60727171ff28ae97bcceda63b1c6.tar.xz
linux-ce154c32af3c60727171ff28ae97bcceda63b1c6.zip
ksmbd: make smb2_find_context_vals return NULL if not found
instead of -ENOENT, make smb2_find_context_vals return NULL if the given context cannot be found. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Hyunchul Lee <hyc.lee@gmail.com> Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/ksmbd')
-rw-r--r--fs/ksmbd/oplock.c2
-rw-r--r--fs/ksmbd/smb2pdu.c14
2 files changed, 8 insertions, 8 deletions
diff --git a/fs/ksmbd/oplock.c b/fs/ksmbd/oplock.c
index 71063568dfee..8e53815eedc6 100644
--- a/fs/ksmbd/oplock.c
+++ b/fs/ksmbd/oplock.c
@@ -1472,7 +1472,7 @@ struct create_context *smb2_find_context_vals(void *open_req, const char *tag)
next = le32_to_cpu(cc->Next);
} while (next != 0);
- return ERR_PTR(-ENOENT);
+ return NULL;
}
/**
diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
index f73721c3b0e9..af33d4f95d44 100644
--- a/fs/ksmbd/smb2pdu.c
+++ b/fs/ksmbd/smb2pdu.c
@@ -2131,7 +2131,7 @@ static inline int check_context_err(void *ctx, char *str)
int err;
err = PTR_ERR(ctx);
- ksmbd_debug(SMB, "find context %s err %d\n", str, err);
+ ksmbd_debug(SMB, "find context %s err %d\n", str, err ? err : -ENOENT);
if (err == -EINVAL) {
pr_err("bad name length\n");
@@ -2525,7 +2525,7 @@ int smb2_open(struct ksmbd_work *work)
if (req->CreateContextsOffset) {
/* Parse non-durable handle create contexts */
context = smb2_find_context_vals(req, SMB2_CREATE_EA_BUFFER);
- if (IS_ERR(context)) {
+ if (IS_ERR_OR_NULL(context)) {
rc = check_context_err(context, SMB2_CREATE_EA_BUFFER);
if (rc < 0)
goto err_out1;
@@ -2540,7 +2540,7 @@ int smb2_open(struct ksmbd_work *work)
context = smb2_find_context_vals(req,
SMB2_CREATE_QUERY_MAXIMAL_ACCESS_REQUEST);
- if (IS_ERR(context)) {
+ if (IS_ERR_OR_NULL(context)) {
rc = check_context_err(context,
SMB2_CREATE_QUERY_MAXIMAL_ACCESS_REQUEST);
if (rc < 0)
@@ -2553,7 +2553,7 @@ int smb2_open(struct ksmbd_work *work)
context = smb2_find_context_vals(req,
SMB2_CREATE_TIMEWARP_REQUEST);
- if (IS_ERR(context)) {
+ if (IS_ERR_OR_NULL(context)) {
rc = check_context_err(context,
SMB2_CREATE_TIMEWARP_REQUEST);
if (rc < 0)
@@ -2567,7 +2567,7 @@ int smb2_open(struct ksmbd_work *work)
if (tcon->posix_extensions) {
context = smb2_find_context_vals(req,
SMB2_CREATE_TAG_POSIX);
- if (IS_ERR(context)) {
+ if (IS_ERR_OR_NULL(context)) {
rc = check_context_err(context,
SMB2_CREATE_TAG_POSIX);
if (rc < 0)
@@ -2970,7 +2970,7 @@ int smb2_open(struct ksmbd_work *work)
az_req = (struct create_alloc_size_req *)smb2_find_context_vals(req,
SMB2_CREATE_ALLOCATION_SIZE);
- if (IS_ERR(az_req)) {
+ if (IS_ERR_OR_NULL(az_req)) {
rc = check_context_err(az_req,
SMB2_CREATE_ALLOCATION_SIZE);
if (rc < 0)
@@ -2992,7 +2992,7 @@ int smb2_open(struct ksmbd_work *work)
}
context = smb2_find_context_vals(req, SMB2_CREATE_QUERY_ON_DISK_ID);
- if (IS_ERR(context)) {
+ if (IS_ERR_OR_NULL(context)) {
rc = check_context_err(context, SMB2_CREATE_QUERY_ON_DISK_ID);
if (rc < 0)
goto err_out;