чт, 24 янв. 2019 г. в 17:05, ronnie sahlberg <ronniesahlberg@xxxxxxxxx>: > > On Fri, Jan 25, 2019 at 5:48 AM Pavel Shilovsky <piastryyy@xxxxxxxxx> wrote: > > > > ср, 23 янв. 2019 г. в 22:19, Ronnie Sahlberg <lsahlber@xxxxxxxxxx>: > > > > > > or else we might trigger a session reconnect. > > > > > > Signed-off-by: Ronnie Sahlberg <lsahlber@xxxxxxxxxx> > > > --- > > > fs/cifs/smb2ops.c | 2 +- > > > fs/cifs/smb2pdu.h | 2 -- > > > 2 files changed, 1 insertion(+), 3 deletions(-) > > > > > > diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c > > > index 34f621fe6dc0..32f19a97c750 100644 > > > --- a/fs/cifs/smb2ops.c > > > +++ b/fs/cifs/smb2ops.c > > > @@ -905,7 +905,7 @@ smb2_query_eas(const unsigned int xid, struct cifs_tcon *tcon, > > > FILE_READ_EA, > > > FILE_FULL_EA_INFORMATION, > > > SMB2_O_INFO_FILE, > > > - SMB2_MAX_EA_BUF, > > > + CIFSMaxBufSize, > > > > This won't work with encryption. Today we allocate server->bigbuf of > > CIFSMaxBufSize (16k) + MAX_SMB2_HDR_SIZE. The MAX_SMB2_HDR_SIZE is "4 > > len + 52 transform hdr + 64 hdr + 56 create rsp" currently. To query > > EAs you need to send open + query + close. So, if you want EAs to be > > 16k, you need to fix MAX_SMB2_HDR_SIZE to be big enough, so it can fit > > transform + 2 open + all create contexts + MAX_PATH * 2 + query info + > > close which is 52 (transform) + 64*3 (3 headers) + 89 (open) + 520 > > (path) + 5 * ~30 (5 create contexts) + 9 (query info) + 60 (close) ~~ > > 1100. > > > > We have been already using MAX_HEADER_SIZE() + CIFSMaxBufSize in some > > calculations in demultiplex thread and encryption functions, let's do > > two fixes: > > > > 1) fix MAX_SMB2_HDR_SIZE to be 52 (transform header) + 64 (hdr) + 89 > > (right create rsp) - long-term minor bug. > > 2) fix smb2_query_eas() to pass (CIFSMaxBufSize - MAX_SMB2_OPEN_SIZE - > > MAX_SMB2_CLOSE_SIZE), where > > MAX_SMB2_OPEN_SIZE is 64 (hdr) + 89 (create rsp) + 520 (path) + 150 > > (contexts) and > > MAX_SMB2_CLOSE_SIZE is 64 + 60. > > Thanks. > > You are right. > But s/89/88 ? We only need size of the fixed part for that constant. > And also need to take into account the size of the query info response > and 8 byte fixed payload as well. > Lots of magic constants :-( > > I have resent an updated patch. Yes, you are right - 88. 89 is together with 1 byte of variable length buffer coming next after create response header. -- Best regards, Pavel Shilovsky