summary refs log tree commit diff
diff options
context:
space:
mode:
authorHyunchul Lee <hyc.lee@gmail.com>2021-07-09 17:06:34 +0900
committerNamjae Jeon <namjae.jeon@samsung.com>2021-07-10 16:24:00 +0900
commit21dd1fd6d718ac59841c3ee3d0b1d82508ef24dc (patch)
tree417930f37b520f829d1c646d69022e8ea96a2f2b
parentce154c32af3c60727171ff28ae97bcceda63b1c6 (diff)
downloadlinux-21dd1fd6d718ac59841c3ee3d0b1d82508ef24dc.tar.gz
ksmbd: handle error cases first in smb2_create_sd_buffers
For code cleanup, handle error cases first in
smb2_create_sd_buffers().

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>
-rw-r--r--fs/ksmbd/smb2pdu.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
index af33d4f95d44..2e266a9d3935 100644
--- a/fs/ksmbd/smb2pdu.c
+++ b/fs/ksmbd/smb2pdu.c
@@ -2319,25 +2319,23 @@ static int smb2_create_sd_buffer(struct ksmbd_work *work,
 				 struct path *path)
 {
 	struct create_context *context;
-	int rc = -ENOENT;
+	struct create_sd_buf_req *sd_buf;
 
 	if (!req->CreateContextsOffset)
-		return rc;
+		return -ENOENT;
 
 	/* Parse SD BUFFER create contexts */
 	context = smb2_find_context_vals(req, SMB2_CREATE_SD_BUFFER);
-	if (context && !IS_ERR(context)) {
-		struct create_sd_buf_req *sd_buf;
-
-		ksmbd_debug(SMB,
-			    "Set ACLs using SMB2_CREATE_SD_BUFFER context\n");
-		sd_buf = (struct create_sd_buf_req *)context;
-		rc = set_info_sec(work->conn, work->tcon,
-				  path, &sd_buf->ntsd,
-				  le32_to_cpu(sd_buf->ccontext.DataLength), true);
-	}
+	if (!context)
+		return -ENOENT;
+	else if (IS_ERR(context))
+		return PTR_ERR(context);
 
-	return rc;
+	ksmbd_debug(SMB,
+		    "Set ACLs using SMB2_CREATE_SD_BUFFER context\n");
+	sd_buf = (struct create_sd_buf_req *)context;
+	return set_info_sec(work->conn, work->tcon, path, &sd_buf->ntsd,
+			    le32_to_cpu(sd_buf->ccontext.DataLength), true);
 }
 
 static void ksmbd_acls_fattr(struct smb_fattr *fattr, struct inode *inode)