Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 269968
b: refs/heads/master
c: c8054eb
h: refs/heads/master
v: v3
  • Loading branch information
Jeff Layton committed Oct 19, 2011
1 parent 99a3f43 commit 4a20eee
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 16 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: 2a37ef94bb153fad13cbb091aab679d7c8b9a67f
refs/heads/master: c8054ebdb6903208b83aa59c387b16d5129492d5
24 changes: 9 additions & 15 deletions trunk/fs/cifs/connect.c
Original file line number Diff line number Diff line change
Expand Up @@ -568,27 +568,21 @@ dequeue_mid(struct mid_q_entry *mid, int malformed)
spin_unlock(&GlobalMid_Lock);
}

static struct mid_q_entry *
find_cifs_mid(struct TCP_Server_Info *server, struct smb_hdr *buf,
int malformed)
static void
handle_mid(struct mid_q_entry *mid, struct TCP_Server_Info *server,
struct smb_hdr *buf, int malformed)
{
struct mid_q_entry *mid = NULL;

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

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)
return mid;
return;

/* All parts received or packet is malformed. */
mid->multiEnd = true;
goto multi_t2_fnd;
return dequeue_mid(mid, malformed);
}
if (!server->large_buf) {
/*FIXME: switch to already allocated largebuf?*/
Expand All @@ -599,7 +593,7 @@ find_cifs_mid(struct TCP_Server_Info *server, struct smb_hdr *buf,
mid->largeBuf = true;
server->bigbuf = NULL;
}
return mid;
return;
}
mid->resp_buf = buf;
mid->largeBuf = server->large_buf;
Expand All @@ -611,9 +605,7 @@ find_cifs_mid(struct TCP_Server_Info *server, struct smb_hdr *buf,
else
server->smallbuf = NULL;
}
multi_t2_fnd:
dequeue_mid(mid, malformed);
return mid;
}

static void clean_demultiplex_info(struct TCP_Server_Info *server)
Expand Down Expand Up @@ -775,6 +767,8 @@ cifs_demultiplex_thread(void *p)
continue;
server->total_read += length;

mid_entry = find_mid(server, smb_buffer);

if (pdu_length > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE - 4) {
cERROR(1, "SMB response too long (%u bytes)",
pdu_length);
Expand Down Expand Up @@ -819,8 +813,8 @@ cifs_demultiplex_thread(void *p)

server->lstrp = jiffies;

mid_entry = find_cifs_mid(server, smb_buffer, length);
if (mid_entry != NULL) {
handle_mid(mid_entry, server, smb_buffer, length);
if (!mid_entry->multiRsp || mid_entry->multiEnd)
mid_entry->callback(mid_entry);
} else if (length != 0) {
Expand Down

0 comments on commit 4a20eee

Please sign in to comment.