+1
-1
fs/cifs/cifsencrypt.c
+1
-1
fs/cifs/cifsencrypt.c
+1
fs/cifs/cifsglob.h
+1
fs/cifs/cifsglob.h
+10
-10
fs/cifs/connect.c
+10
-10
fs/cifs/connect.c
···
871
/*
872
* SMB1 does not use credits.
873
*/
874
-
if (server->vals->header_preamble_size)
875
return 0;
876
877
return le16_to_cpu(shdr->CreditRequest);
···
1050
1051
/* make sure this will fit in a large buffer */
1052
if (pdu_length > CIFSMaxBufSize + MAX_HEADER_SIZE(server) -
1053
-
server->vals->header_preamble_size) {
1054
cifs_server_dbg(VFS, "SMB response too long (%u bytes)\n", pdu_length);
1055
cifs_reconnect(server, true);
1056
return -ECONNABORTED;
···
1065
1066
/* now read the rest */
1067
length = cifs_read_from_socket(server, buf + HEADER_SIZE(server) - 1,
1068
-
pdu_length - HEADER_SIZE(server) + 1
1069
-
+ server->vals->header_preamble_size);
1070
1071
if (length < 0)
1072
return length;
···
1122
/*
1123
* SMB1 does not use credits.
1124
*/
1125
-
if (server->vals->header_preamble_size)
1126
return;
1127
1128
if (shdr->CreditRequest) {
···
1180
if (length < 0)
1181
continue;
1182
1183
-
if (server->vals->header_preamble_size == 0)
1184
server->total_read = 0;
1185
else
1186
server->total_read = length;
···
1199
1200
/* make sure we have enough to get to the MID */
1201
if (server->pdu_size < HEADER_SIZE(server) - 1 -
1202
-
server->vals->header_preamble_size) {
1203
cifs_server_dbg(VFS, "SMB response too short (%u bytes)\n",
1204
server->pdu_size);
1205
cifs_reconnect(server, true);
···
1208
1209
/* read down to the MID */
1210
length = cifs_read_from_socket(server,
1211
-
buf + server->vals->header_preamble_size,
1212
-
HEADER_SIZE(server) - 1
1213
-
- server->vals->header_preamble_size);
1214
if (length < 0)
1215
continue;
1216
server->total_read += length;
···
871
/*
872
* SMB1 does not use credits.
873
*/
874
+
if (HEADER_PREAMBLE_SIZE(server))
875
return 0;
876
877
return le16_to_cpu(shdr->CreditRequest);
···
1050
1051
/* make sure this will fit in a large buffer */
1052
if (pdu_length > CIFSMaxBufSize + MAX_HEADER_SIZE(server) -
1053
+
HEADER_PREAMBLE_SIZE(server)) {
1054
cifs_server_dbg(VFS, "SMB response too long (%u bytes)\n", pdu_length);
1055
cifs_reconnect(server, true);
1056
return -ECONNABORTED;
···
1065
1066
/* now read the rest */
1067
length = cifs_read_from_socket(server, buf + HEADER_SIZE(server) - 1,
1068
+
pdu_length - HEADER_SIZE(server) + 1 +
1069
+
HEADER_PREAMBLE_SIZE(server));
1070
1071
if (length < 0)
1072
return length;
···
1122
/*
1123
* SMB1 does not use credits.
1124
*/
1125
+
if (HEADER_PREAMBLE_SIZE(server))
1126
return;
1127
1128
if (shdr->CreditRequest) {
···
1180
if (length < 0)
1181
continue;
1182
1183
+
if (HEADER_PREAMBLE_SIZE(server) == 0)
1184
server->total_read = 0;
1185
else
1186
server->total_read = length;
···
1199
1200
/* make sure we have enough to get to the MID */
1201
if (server->pdu_size < HEADER_SIZE(server) - 1 -
1202
+
HEADER_PREAMBLE_SIZE(server)) {
1203
cifs_server_dbg(VFS, "SMB response too short (%u bytes)\n",
1204
server->pdu_size);
1205
cifs_reconnect(server, true);
···
1208
1209
/* read down to the MID */
1210
length = cifs_read_from_socket(server,
1211
+
buf + HEADER_PREAMBLE_SIZE(server),
1212
+
HEADER_SIZE(server) - 1 -
1213
+
HEADER_PREAMBLE_SIZE(server));
1214
if (length < 0)
1215
continue;
1216
server->total_read += length;
+10
-11
fs/cifs/transport.c
+10
-11
fs/cifs/transport.c
···
261
int nvec;
262
unsigned long buflen = 0;
263
264
-
if (server->vals->header_preamble_size == 0 &&
265
-
rqst->rq_nvec >= 2 && rqst->rq_iov[0].iov_len == 4) {
266
iov = &rqst->rq_iov[1];
267
nvec = rqst->rq_nvec - 1;
268
} else {
···
346
sigprocmask(SIG_BLOCK, &mask, &oldmask);
347
348
/* Generate a rfc1002 marker for SMB2+ */
349
-
if (server->vals->header_preamble_size == 0) {
350
struct kvec hiov = {
351
.iov_base = &rfc1002_marker,
352
.iov_len = 4
···
1238
buf = (char *)midQ[i]->resp_buf;
1239
resp_iov[i].iov_base = buf;
1240
resp_iov[i].iov_len = midQ[i]->resp_buf_size +
1241
-
server->vals->header_preamble_size;
1242
1243
if (midQ[i]->large_buf)
1244
resp_buf_type[i] = CIFS_LARGE_BUFFER;
···
1643
cifs_discard_remaining_data(struct TCP_Server_Info *server)
1644
{
1645
unsigned int rfclen = server->pdu_size;
1646
-
int remaining = rfclen + server->vals->header_preamble_size -
1647
server->total_read;
1648
1649
while (remaining > 0) {
···
1689
unsigned int data_offset, data_len;
1690
struct cifs_readdata *rdata = mid->callback_data;
1691
char *buf = server->smallbuf;
1692
-
unsigned int buflen = server->pdu_size +
1693
-
server->vals->header_preamble_size;
1694
bool use_rdma_mr = false;
1695
1696
cifs_dbg(FYI, "%s: mid=%llu offset=%llu bytes=%u\n",
···
1723
1724
/* set up first two iov for signature check and to get credits */
1725
rdata->iov[0].iov_base = buf;
1726
-
rdata->iov[0].iov_len = server->vals->header_preamble_size;
1727
-
rdata->iov[1].iov_base = buf + server->vals->header_preamble_size;
1728
rdata->iov[1].iov_len =
1729
-
server->total_read - server->vals->header_preamble_size;
1730
cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
1731
rdata->iov[0].iov_base, rdata->iov[0].iov_len);
1732
cifs_dbg(FYI, "1: iov_base=%p iov_len=%zu\n",
···
1751
}
1752
1753
data_offset = server->ops->read_data_offset(buf) +
1754
-
server->vals->header_preamble_size;
1755
if (data_offset < server->total_read) {
1756
/*
1757
* win2k8 sometimes sends an offset of 0 when the read
···
261
int nvec;
262
unsigned long buflen = 0;
263
264
+
if (HEADER_PREAMBLE_SIZE(server) == 0 && rqst->rq_nvec >= 2 &&
265
+
rqst->rq_iov[0].iov_len == 4) {
266
iov = &rqst->rq_iov[1];
267
nvec = rqst->rq_nvec - 1;
268
} else {
···
346
sigprocmask(SIG_BLOCK, &mask, &oldmask);
347
348
/* Generate a rfc1002 marker for SMB2+ */
349
+
if (HEADER_PREAMBLE_SIZE(server) == 0) {
350
struct kvec hiov = {
351
.iov_base = &rfc1002_marker,
352
.iov_len = 4
···
1238
buf = (char *)midQ[i]->resp_buf;
1239
resp_iov[i].iov_base = buf;
1240
resp_iov[i].iov_len = midQ[i]->resp_buf_size +
1241
+
HEADER_PREAMBLE_SIZE(server);
1242
1243
if (midQ[i]->large_buf)
1244
resp_buf_type[i] = CIFS_LARGE_BUFFER;
···
1643
cifs_discard_remaining_data(struct TCP_Server_Info *server)
1644
{
1645
unsigned int rfclen = server->pdu_size;
1646
+
int remaining = rfclen + HEADER_PREAMBLE_SIZE(server) -
1647
server->total_read;
1648
1649
while (remaining > 0) {
···
1689
unsigned int data_offset, data_len;
1690
struct cifs_readdata *rdata = mid->callback_data;
1691
char *buf = server->smallbuf;
1692
+
unsigned int buflen = server->pdu_size + HEADER_PREAMBLE_SIZE(server);
1693
bool use_rdma_mr = false;
1694
1695
cifs_dbg(FYI, "%s: mid=%llu offset=%llu bytes=%u\n",
···
1724
1725
/* set up first two iov for signature check and to get credits */
1726
rdata->iov[0].iov_base = buf;
1727
+
rdata->iov[0].iov_len = HEADER_PREAMBLE_SIZE(server);
1728
+
rdata->iov[1].iov_base = buf + HEADER_PREAMBLE_SIZE(server);
1729
rdata->iov[1].iov_len =
1730
+
server->total_read - HEADER_PREAMBLE_SIZE(server);
1731
cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
1732
rdata->iov[0].iov_base, rdata->iov[0].iov_len);
1733
cifs_dbg(FYI, "1: iov_base=%p iov_len=%zu\n",
···
1752
}
1753
1754
data_offset = server->ops->read_data_offset(buf) +
1755
+
HEADER_PREAMBLE_SIZE(server);
1756
if (data_offset < server->total_read) {
1757
/*
1758
* win2k8 sometimes sends an offset of 0 when the read