diff mbox series

ksmbd-tools: add reserved room in ipc request/response

Message ID 20220106015702.23063-1-linkinjeon@kernel.org (mailing list archive)
State New, archived
Headers show
Series ksmbd-tools: add reserved room in ipc request/response | expand

Commit Message

Namjae Jeon Jan. 6, 2022, 1:57 a.m. UTC
Whenever new parameter is added to smb configuration, It is possible
to break the execution of the IPC daemon by mismatch size of
request/response. This patch tries to reserve space in ipc request/response
in advance to prevent that.

Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
---
 include/linux/ksmbd_server.h | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/include/linux/ksmbd_server.h b/include/linux/ksmbd_server.h
index 647cfee..78ae6e7 100644
--- a/include/linux/ksmbd_server.h
+++ b/include/linux/ksmbd_server.h
@@ -47,6 +47,7 @@  struct ksmbd_startup_request {
 	__u32	share_fake_fscaps;
 	__u32	sub_auth[3];
 	__u32	smb2_max_credits;
+	__u32   reserved[128];		/* Reserved room */
 	__u32	ifc_list_sz;
 	__s8	____payload[];
 };
@@ -54,12 +55,13 @@  struct ksmbd_startup_request {
 #define KSMBD_STARTUP_CONFIG_INTERFACES(s)	((s)->____payload)
 
 struct ksmbd_shutdown_request {
-	__s32	reserved;
+	__s32	reserved[16];
 };
 
 struct ksmbd_login_request {
 	__u32	handle;
 	__s8	account[KSMBD_REQ_MAX_ACCOUNT_NAME_SZ];
+	__u32   reserved[16];		/* Reserved room */
 };
 
 struct ksmbd_login_response {
@@ -70,11 +72,13 @@  struct ksmbd_login_response {
 	__u16	status;
 	__u16	hash_sz;
 	__s8	hash[KSMBD_REQ_MAX_HASH_SZ];
+	__u32   reserved[16];		/* Reserved room */
 };
 
 struct ksmbd_share_config_request {
 	__u32	handle;
 	__s8	share_name[KSMBD_REQ_MAX_SHARE_NAME];
+	__u32   reserved[16];		/* Reserved room */
 };
 
 struct ksmbd_share_config_response {
@@ -86,6 +90,7 @@  struct ksmbd_share_config_response {
 	__u16	force_directory_mode;
 	__u16	force_uid;
 	__u16	force_gid;
+	__u32   reserved[128];		/* Reserved room */
 	__u32	veto_list_sz;
 	__s8	____payload[];
 };
@@ -108,22 +113,26 @@  struct ksmbd_tree_connect_request {
 	__s8	account[KSMBD_REQ_MAX_ACCOUNT_NAME_SZ];
 	__s8	share[KSMBD_REQ_MAX_SHARE_NAME];
 	__s8	peer_addr[64];
+	__u32   reserved[16];		/* Reserved room */
 };
 
 struct ksmbd_tree_connect_response {
 	__u32	handle;
 	__u16	status;
 	__u16	connection_flags;
+	__u32   reserved[16];		/* Reserved room */
 };
 
 struct ksmbd_tree_disconnect_request {
 	__u64	session_id;
 	__u64	connect_id;
+	__u32   reserved[16];		/* Reserved room */
 };
 
 struct ksmbd_logout_request {
 	__s8	account[KSMBD_REQ_MAX_ACCOUNT_NAME_SZ];
 	__u32	account_flags;
+	__u32   reserved[16];		/* Reserved room */
 };
 
 struct ksmbd_rpc_command {