FAILED: patch "[PATCH] cifs: we can not use small padding iovs together with" failed to apply to 4.20-stable tree
[email protected]
maintainerThe patch below does not apply to the 4.20-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From e77fe73c7e38c36145825d84cfe385d400aba4fd Mon Sep 17 00:00:00 2001
From: Ronnie Sahlberg <[email protected]>
Date: Mon, 31 Dec 2018 13:43:40 +1000
Subject: [PATCH] cifs: we can not use small padding iovs together with
encryption
We can not append small padding buffers as separate iovs when encryption is used. For this case we must flatten the request into a single buffer containing both the data from all the iovs as well as the padding bytes.
This is at least needed for 4.20 as well due to compounding changes.
fs/cifs/smb2inode.c +7 -9
@@ -49,7 +49,6 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,struct cifs_open_parms oparms;struct cifs_fid fid;struct cifs_ses *ses = tcon->ses; -struct TCP_Server_Info *server = ses->server;int num_rqst =0 ;struct smb_rqst rqst[3 ];int resp_buftype[3 ];
@@ -97,7 +96,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,if (rc) goto finished; -smb2_set_next_command (server, &rqst[num_rqst++],0 ); +smb2_set_next_command (tcon, &rqst[num_rqst++]);/* Operation */ switch (command) {
@@ -111,7 +110,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,SMB2_O_INFO_FILE ,0 ,sizeof (struct smb2_file_all_info ) + PATH_MAX * 2, 0, NULL); -smb2_set_next_command (server, &rqst[num_rqst],0 ); +smb2_set_next_command (tcon, &rqst[num_rqst]);smb2_set_related (&rqst[num_rqst++]);break ;case SMB2_OP_DELETE :
@@ -134,7 +133,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,COMPOUND_FID , current->tgid,FILE_DISPOSITION_INFORMATION , SMB2_O_INFO_FILE, 0, data, size); -smb2_set_next_command (server, &rqst[num_rqst],1 ); +smb2_set_next_command (tcon, &rqst[num_rqst]);smb2_set_related (&rqst[num_rqst++]);break ;case SMB2_OP_SET_EOF :
@@ -149,7 +148,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,COMPOUND_FID , current->tgid,FILE_END_OF_FILE_INFORMATION , SMB2_O_INFO_FILE, 0, data, size); -smb2_set_next_command (server, &rqst[num_rqst],0 ); +smb2_set_next_command (tcon, &rqst[num_rqst]);smb2_set_related (&rqst[num_rqst++]);break ;case SMB2_OP_SET_INFO :
@@ -165,7 +164,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,COMPOUND_FID , current->tgid,FILE_BASIC_INFORMATION , SMB2_O_INFO_FILE, 0, data, size); -smb2_set_next_command (server, &rqst[num_rqst],0 ); +smb2_set_next_command (tcon, &rqst[num_rqst]);smb2_set_related (&rqst[num_rqst++]);break ;case SMB2_OP_RENAME :
@@ -189,7 +188,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,COMPOUND_FID , current->tgid,FILE_RENAME_INFORMATION , SMB2_O_INFO_FILE, 0, data, size); -smb2_set_next_command (server, &rqst[num_rqst],0 ); +smb2_set_next_command (tcon, &rqst[num_rqst]);smb2_set_related (&rqst[num_rqst++]);break ;case SMB2_OP_HARDLINK :
@@ -213,7 +212,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,COMPOUND_FID , current->tgid,FILE_LINK_INFORMATION , SMB2_O_INFO_FILE, 0, data, size); -smb2_set_next_command (server, &rqst[num_rqst],0 ); +smb2_set_next_command (tcon, &rqst[num_rqst]);smb2_set_related (&rqst[num_rqst++]);break ;default :
@@ -388,7 +387,6 @@ smb2_set_path_attr(const unsigned int xid, struct cifs_tcon *tcon, rc = -ENOMEM ; goto smb2_rename_path; } - rc =smb2_compound_op (xid, tcon, cifs_sb, from_name, access,FILE_OPEN ,0 , smb2_to_name, command); smb2_rename_path:
fs/cifs/smb2ops.c +46 -21
135 lines not on this page · raw message
fs/cifs/smb2proto.h +2 -3
@@ -116,9 +116,8 @@ extern void smb2_reconnect_server(struct work_struct *work);extern int smb3_crypto_aead_allocate (struct TCP_Server_Info *server);extern unsigned long smb_rqst_len (struct TCP_Server_Info *server,struct smb_rqst *rqst); -extern void smb2_set_next_command (struct TCP_Server_Info *server, -struct smb_rqst *rqst, -bool has_space_for_padding); +extern void smb2_set_next_command (struct cifs_tcon *tcon, +struct smb_rqst *rqst);extern void smb2_set_related (struct smb_rqst *rqst);/*