@@ -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 {
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(-)