Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 269966
b: refs/heads/master
c: ffc00e2
h: refs/heads/master
v: v3
  • Loading branch information
Jeff Layton committed Oct 19, 2011
1 parent 2b33554 commit 6f681c5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 21 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ea1f4502fc939b64807f9ab0eca259321047fe83
refs/heads/master: ffc00e27aa5d343eb71068c185cdbd65871ccdce
36 changes: 16 additions & 20 deletions trunk/fs/cifs/connect.c
Original file line number Diff line number Diff line change
Expand Up @@ -576,26 +576,22 @@ dequeue_mid(struct mid_q_entry *mid, int malformed)

static struct mid_q_entry *
find_cifs_mid(struct TCP_Server_Info *server, struct smb_hdr *buf,
int *malformed, bool is_large_buf, bool *is_multi_rsp,
char **bigbuf)
int malformed, bool is_large_buf, char **bigbuf)
{
struct mid_q_entry *mid = NULL;

mid = find_mid(server, buf);
if (!mid)
return mid;

if (*malformed == 0 && check2ndT2(buf) > 0) {
/* We have a multipart transact2 resp */
*is_multi_rsp = true;
if (malformed == 0 && check2ndT2(buf) > 0) {
mid->multiRsp = true;
if (mid->resp_buf) {
/* merge response - fix up 1st*/
*malformed = coalesce_t2(buf, mid->resp_buf);
if (*malformed > 0) {
*malformed = 0;
mid->multiRsp = true;
return NULL;
}
malformed = coalesce_t2(buf, mid->resp_buf);
if (malformed > 0)
return mid;

/* All parts received or packet is malformed. */
mid->multiEnd = true;
goto multi_t2_fnd;
Expand All @@ -614,7 +610,7 @@ find_cifs_mid(struct TCP_Server_Info *server, struct smb_hdr *buf,
mid->resp_buf = buf;
mid->largeBuf = is_large_buf;
multi_t2_fnd:
dequeue_mid(mid, *malformed);
dequeue_mid(mid, malformed);
return mid;
}

Expand Down Expand Up @@ -725,7 +721,6 @@ cifs_demultiplex_thread(void *p)
struct task_struct *task_to_wake = NULL;
struct mid_q_entry *mid_entry;
bool isLargeBuf = false;
bool isMultiRsp = false;

current->flags |= PF_MEMALLOC;
cFYI(1, "Demultiplex PID: %d", task_pid_nr(current));
Expand All @@ -745,7 +740,6 @@ cifs_demultiplex_thread(void *p)
continue;

isLargeBuf = false;
isMultiRsp = false;
smb_buffer = (struct smb_hdr *)smallbuf;
buf = smallbuf;
pdu_length = 4; /* enough to get RFC1001 header */
Expand Down Expand Up @@ -823,23 +817,25 @@ cifs_demultiplex_thread(void *p)

server->lstrp = jiffies;

mid_entry = find_cifs_mid(server, smb_buffer, &length,
isLargeBuf, &isMultiRsp, &bigbuf);
mid_entry = find_cifs_mid(server, smb_buffer, length,
isLargeBuf, &bigbuf);
if (mid_entry != NULL) {
mid_entry->callback(mid_entry);
if (mid_entry->multiRsp && !mid_entry->multiEnd)
continue;

/* Was previous buf put in mpx struct for multi-rsp? */
if (!isMultiRsp) {
if (!mid_entry->multiRsp) {
/* smb buffer will be freed by user thread */
if (isLargeBuf)
bigbuf = NULL;
else
smallbuf = NULL;
}
mid_entry->callback(mid_entry);
} else if (length != 0) {
/* response sanity checks failed */
continue;
} else if (!is_valid_oplock_break(smb_buffer, server) &&
!isMultiRsp) {
} else if (!is_valid_oplock_break(smb_buffer, server)) {
cERROR(1, "No task to wake, unknown frame received! "
"NumMids %d", atomic_read(&midCount));
cifs_dump_mem("Received Data is: ", buf,
Expand Down

0 comments on commit 6f681c5

Please sign in to comment.