diff options
| author | Ronnie Sahlberg <lsahlber@redhat.com> | 2018-04-09 04:06:26 -0400 |
|---|---|---|
| committer | Steve French <smfrench@gmail.com> | 2018-04-12 18:06:33 -0400 |
| commit | 2e96467d9eb189b38954bcbbf1ee16762914f4cb (patch) | |
| tree | 84a179ad8e3d58c31266b8852d8db976b632e186 | |
| parent | 5100d8a3fe034845926266a4e7f5bdcbb859088b (diff) | |
cifs: add pdu_size to the TCP_Server_Info structure
and get rid of some get_rfc1002_length() in smb2
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <smfrench@gmail.com>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
| -rw-r--r-- | fs/cifs/cifsglob.h | 2 | ||||
| -rw-r--r-- | fs/cifs/cifssmb.c | 2 | ||||
| -rw-r--r-- | fs/cifs/connect.c | 3 | ||||
| -rw-r--r-- | fs/cifs/smb2ops.c | 8 |
4 files changed, 9 insertions, 6 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 56fee0330afc..5c1568ccd67d 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h | |||
| @@ -665,6 +665,8 @@ struct TCP_Server_Info { | |||
| 665 | struct delayed_work echo; /* echo ping workqueue job */ | 665 | struct delayed_work echo; /* echo ping workqueue job */ |
| 666 | char *smallbuf; /* pointer to current "small" buffer */ | 666 | char *smallbuf; /* pointer to current "small" buffer */ |
| 667 | char *bigbuf; /* pointer to current "big" buffer */ | 667 | char *bigbuf; /* pointer to current "big" buffer */ |
| 668 | /* Total size of this PDU. Only valid from cifs_demultiplex_thread */ | ||
| 669 | unsigned int pdu_size; | ||
| 668 | unsigned int total_read; /* total amount of data read in this pass */ | 670 | unsigned int total_read; /* total amount of data read in this pass */ |
| 669 | #ifdef CONFIG_CIFS_FSCACHE | 671 | #ifdef CONFIG_CIFS_FSCACHE |
| 670 | struct fscache_cookie *fscache; /* client index cache cookie */ | 672 | struct fscache_cookie *fscache; /* client index cache cookie */ |
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c index abdc93d4fee8..890b3a40c79c 100644 --- a/fs/cifs/cifssmb.c +++ b/fs/cifs/cifssmb.c | |||
| @@ -1456,7 +1456,7 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid) | |||
| 1456 | unsigned int data_offset, data_len; | 1456 | unsigned int data_offset, data_len; |
| 1457 | struct cifs_readdata *rdata = mid->callback_data; | 1457 | struct cifs_readdata *rdata = mid->callback_data; |
| 1458 | char *buf = server->smallbuf; | 1458 | char *buf = server->smallbuf; |
| 1459 | unsigned int buflen = get_rfc1002_length(buf) + | 1459 | unsigned int buflen = server->pdu_size + |
| 1460 | server->vals->header_preamble_size; | 1460 | server->vals->header_preamble_size; |
| 1461 | bool use_rdma_mr = false; | 1461 | bool use_rdma_mr = false; |
| 1462 | 1462 | ||
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 4e0808f40195..48012a0addf1 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c | |||
| @@ -772,7 +772,7 @@ standard_receive3(struct TCP_Server_Info *server, struct mid_q_entry *mid) | |||
| 772 | { | 772 | { |
| 773 | int length; | 773 | int length; |
| 774 | char *buf = server->smallbuf; | 774 | char *buf = server->smallbuf; |
| 775 | unsigned int pdu_length = get_rfc1002_length(buf); | 775 | unsigned int pdu_length = server->pdu_size; |
| 776 | 776 | ||
| 777 | /* make sure this will fit in a large buffer */ | 777 | /* make sure this will fit in a large buffer */ |
| 778 | if (pdu_length > CIFSMaxBufSize + MAX_HEADER_SIZE(server) - | 778 | if (pdu_length > CIFSMaxBufSize + MAX_HEADER_SIZE(server) - |
| @@ -881,6 +881,7 @@ cifs_demultiplex_thread(void *p) | |||
| 881 | * so we can now interpret the length field. | 881 | * so we can now interpret the length field. |
| 882 | */ | 882 | */ |
| 883 | pdu_length = get_rfc1002_length(buf); | 883 | pdu_length = get_rfc1002_length(buf); |
| 884 | server->pdu_size = pdu_length; | ||
| 884 | 885 | ||
| 885 | cifs_dbg(FYI, "RFC1002 header 0x%x\n", pdu_length); | 886 | cifs_dbg(FYI, "RFC1002 header 0x%x\n", pdu_length); |
| 886 | if (!is_smb_response(server, buf[0])) | 887 | if (!is_smb_response(server, buf[0])) |
diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c index 968b1d43a1ea..def84fed3571 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c | |||
| @@ -2550,7 +2550,7 @@ receive_encrypted_read(struct TCP_Server_Info *server, struct mid_q_entry **mid) | |||
| 2550 | unsigned int npages; | 2550 | unsigned int npages; |
| 2551 | struct page **pages; | 2551 | struct page **pages; |
| 2552 | unsigned int len; | 2552 | unsigned int len; |
| 2553 | unsigned int buflen = get_rfc1002_length(buf) + server->vals->header_preamble_size; | 2553 | unsigned int buflen = server->pdu_size + server->vals->header_preamble_size; |
| 2554 | int rc; | 2554 | int rc; |
| 2555 | int i = 0; | 2555 | int i = 0; |
| 2556 | 2556 | ||
| @@ -2624,7 +2624,7 @@ receive_encrypted_standard(struct TCP_Server_Info *server, | |||
| 2624 | { | 2624 | { |
| 2625 | int length; | 2625 | int length; |
| 2626 | char *buf = server->smallbuf; | 2626 | char *buf = server->smallbuf; |
| 2627 | unsigned int pdu_length = get_rfc1002_length(buf); | 2627 | unsigned int pdu_length = server->pdu_size; |
| 2628 | unsigned int buf_size; | 2628 | unsigned int buf_size; |
| 2629 | struct mid_q_entry *mid_entry; | 2629 | struct mid_q_entry *mid_entry; |
| 2630 | 2630 | ||
| @@ -2668,7 +2668,7 @@ static int | |||
| 2668 | smb3_receive_transform(struct TCP_Server_Info *server, struct mid_q_entry **mid) | 2668 | smb3_receive_transform(struct TCP_Server_Info *server, struct mid_q_entry **mid) |
| 2669 | { | 2669 | { |
| 2670 | char *buf = server->smallbuf; | 2670 | char *buf = server->smallbuf; |
| 2671 | unsigned int pdu_length = get_rfc1002_length(buf); | 2671 | unsigned int pdu_length = server->pdu_size; |
| 2672 | struct smb2_transform_hdr *tr_hdr = (struct smb2_transform_hdr *)buf; | 2672 | struct smb2_transform_hdr *tr_hdr = (struct smb2_transform_hdr *)buf; |
| 2673 | unsigned int orig_len = le32_to_cpu(tr_hdr->OriginalMessageSize); | 2673 | unsigned int orig_len = le32_to_cpu(tr_hdr->OriginalMessageSize); |
| 2674 | 2674 | ||
| @@ -2699,7 +2699,7 @@ smb3_handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid) | |||
| 2699 | { | 2699 | { |
| 2700 | char *buf = server->large_buf ? server->bigbuf : server->smallbuf; | 2700 | char *buf = server->large_buf ? server->bigbuf : server->smallbuf; |
| 2701 | 2701 | ||
| 2702 | return handle_read_data(server, mid, buf, get_rfc1002_length(buf) + | 2702 | return handle_read_data(server, mid, buf, server->pdu_size + |
| 2703 | server->vals->header_preamble_size, | 2703 | server->vals->header_preamble_size, |
| 2704 | NULL, 0, 0); | 2704 | NULL, 0, 0); |
| 2705 | } | 2705 | } |
