|
@@ -1400,9 +1400,9 @@ openRetry:
|
|
* current bigbuf.
|
|
* current bigbuf.
|
|
*/
|
|
*/
|
|
int
|
|
int
|
|
-cifs_discard_remaining_data(struct TCP_Server_Info *server, char *buf)
|
|
|
|
|
|
+cifs_discard_remaining_data(struct TCP_Server_Info *server)
|
|
{
|
|
{
|
|
- unsigned int rfclen = get_rfc1002_length(buf);
|
|
|
|
|
|
+ unsigned int rfclen = get_rfc1002_length(server->smallbuf);
|
|
int remaining = rfclen + 4 - server->total_read;
|
|
int remaining = rfclen + 4 - server->total_read;
|
|
|
|
|
|
while (remaining > 0) {
|
|
while (remaining > 0) {
|
|
@@ -1426,8 +1426,10 @@ cifs_readv_discard(struct TCP_Server_Info *server, struct mid_q_entry *mid)
|
|
int length;
|
|
int length;
|
|
struct cifs_readdata *rdata = mid->callback_data;
|
|
struct cifs_readdata *rdata = mid->callback_data;
|
|
|
|
|
|
- length = cifs_discard_remaining_data(server, mid->resp_buf);
|
|
|
|
|
|
+ length = cifs_discard_remaining_data(server);
|
|
dequeue_mid(mid, rdata->result);
|
|
dequeue_mid(mid, rdata->result);
|
|
|
|
+ mid->resp_buf = server->smallbuf;
|
|
|
|
+ server->smallbuf = NULL;
|
|
return length;
|
|
return length;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1459,7 +1461,7 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid)
|
|
|
|
|
|
if (server->ops->is_status_pending &&
|
|
if (server->ops->is_status_pending &&
|
|
server->ops->is_status_pending(buf, server, 0)) {
|
|
server->ops->is_status_pending(buf, server, 0)) {
|
|
- cifs_discard_remaining_data(server, buf);
|
|
|
|
|
|
+ cifs_discard_remaining_data(server);
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1519,9 +1521,6 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid)
|
|
cifs_dbg(FYI, "0: iov_base=%p iov_len=%u\n",
|
|
cifs_dbg(FYI, "0: iov_base=%p iov_len=%u\n",
|
|
rdata->iov[0].iov_base, server->total_read);
|
|
rdata->iov[0].iov_base, server->total_read);
|
|
|
|
|
|
- mid->resp_buf = server->smallbuf;
|
|
|
|
- server->smallbuf = NULL;
|
|
|
|
-
|
|
|
|
/* how much data is in the response? */
|
|
/* how much data is in the response? */
|
|
data_len = server->ops->read_data_length(buf);
|
|
data_len = server->ops->read_data_length(buf);
|
|
if (data_offset + data_len > buflen) {
|
|
if (data_offset + data_len > buflen) {
|
|
@@ -1544,6 +1543,8 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid)
|
|
return cifs_readv_discard(server, mid);
|
|
return cifs_readv_discard(server, mid);
|
|
|
|
|
|
dequeue_mid(mid, false);
|
|
dequeue_mid(mid, false);
|
|
|
|
+ mid->resp_buf = server->smallbuf;
|
|
|
|
+ server->smallbuf = NULL;
|
|
return length;
|
|
return length;
|
|
}
|
|
}
|
|
|
|
|