Author: sfrench
Date: 2006-08-11 22:04:45 +0000 (Fri, 11 Aug 2006)
New Revision: 68

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=linux-cifs-client&rev=68

Log:
Merge with cifs git tree  (and minor tweak to jra's earlier patch to shrink it 
by
not altering header_assemble)

Modified:
   branches/linux-2.6-cifs-git-devel/fs/cifs/cifsencrypt.c
   branches/linux-2.6-cifs-git-devel/fs/cifs/cifsproto.h
   branches/linux-2.6-cifs-git-devel/fs/cifs/cifssmb.c
   branches/linux-2.6-cifs-git-devel/fs/cifs/connect.c
   branches/linux-2.6-cifs-git-devel/fs/cifs/misc.c
   branches/linux-2.6-cifs-git-devel/fs/cifs/transport.c


Changeset:
Modified: branches/linux-2.6-cifs-git-devel/fs/cifs/cifsencrypt.c
===================================================================
--- branches/linux-2.6-cifs-git-devel/fs/cifs/cifsencrypt.c     2006-07-29 
00:17:01 UTC (rev 67)
+++ branches/linux-2.6-cifs-git-devel/fs/cifs/cifsencrypt.c     2006-08-11 
22:04:45 UTC (rev 68)
@@ -277,7 +277,8 @@
                return;
 
        memset(password_with_pad, 0, CIFS_ENCPWD_SIZE);
-       strncpy(password_with_pad, ses->password, CIFS_ENCPWD_SIZE);
+       if(ses->password)
+               strncpy(password_with_pad, ses->password, CIFS_ENCPWD_SIZE);
 
        if((ses->server->secMode & SECMODE_PW_ENCRYPT) == 0)
                if(extended_security & CIFSSEC_MAY_PLNTXT) {

Modified: branches/linux-2.6-cifs-git-devel/fs/cifs/cifsproto.h
===================================================================
--- branches/linux-2.6-cifs-git-devel/fs/cifs/cifsproto.h       2006-07-29 
00:17:01 UTC (rev 67)
+++ branches/linux-2.6-cifs-git-devel/fs/cifs/cifsproto.h       2006-08-11 
22:04:45 UTC (rev 68)
@@ -66,9 +66,8 @@
 extern int cifs_inet_pton(int, char * source, void *dst);
 extern int map_smb_to_linux_error(struct smb_hdr *smb);
 extern void header_assemble(struct smb_hdr *, char /* command */ ,
-                           const struct cifsTconInfo *,
-                           __u16 mid,
-                           int /* length of fixed section (word count) in two 
byte units */);
+                           const struct cifsTconInfo *, int /* length of
+                           fixed section (word count) in two byte units */);
 extern int small_smb_init_no_tc(const int smb_cmd, const int wct,
                                struct cifsSesInfo *ses,
                                void ** request_buf);

Modified: branches/linux-2.6-cifs-git-devel/fs/cifs/cifssmb.c
===================================================================
--- branches/linux-2.6-cifs-git-devel/fs/cifs/cifssmb.c 2006-07-29 00:17:01 UTC 
(rev 67)
+++ branches/linux-2.6-cifs-git-devel/fs/cifs/cifssmb.c 2006-08-11 22:04:45 UTC 
(rev 68)
@@ -201,8 +201,7 @@
                return -ENOMEM;
        }
 
-       header_assemble((struct smb_hdr *) *request_buf, smb_command, tcon,
-               tcon ? GetNextMid(tcon->ses->server) : 0, wct);
+       header_assemble((struct smb_hdr *) *request_buf, smb_command, tcon,wct);
 
         if(tcon != NULL)
                 cifs_stats_inc(&tcon->num_smbs_sent);
@@ -346,7 +345,7 @@
                *response_buf = *request_buf; 
 
        header_assemble((struct smb_hdr *) *request_buf, smb_command, tcon,
-                       tcon ? GetNextMid(tcon->ses->server) : 0, wct /*wct */ 
);
+                       wct /*wct */ );
 
         if(tcon != NULL)
                 cifs_stats_inc(&tcon->num_smbs_sent);

Modified: branches/linux-2.6-cifs-git-devel/fs/cifs/connect.c
===================================================================
--- branches/linux-2.6-cifs-git-devel/fs/cifs/connect.c 2006-07-29 00:17:01 UTC 
(rev 67)
+++ branches/linux-2.6-cifs-git-devel/fs/cifs/connect.c 2006-08-11 22:04:45 UTC 
(rev 68)
@@ -182,6 +182,7 @@
 
        while ((server->tcpStatus != CifsExiting) && (server->tcpStatus != 
CifsGood))
        {
+               try_to_freeze();
                if(server->protocolType == IPV6) {
                        rc = 
ipv6_connect(&server->addr.sockAddr6,&server->ssocket);
                } else {
@@ -2042,8 +2043,9 @@
 
        /* send SMBsessionSetup here */
        header_assemble(smb_buffer, SMB_COM_SESSION_SETUP_ANDX,
-                       NULL /* no tCon exists yet */ , 
GetNextMid(ses->server), 13 /* wct */ );
+                       NULL /* no tCon exists yet */ , 13 /* wct */ );
 
+       smb_buffer->Mid = GetNextMid(ses->server);
        pSMB->req_no_secext.AndXCommand = 0xFF;
        pSMB->req_no_secext.MaxBufferSize = cpu_to_le16(ses->server->maxBuf);
        pSMB->req_no_secext.MaxMpxCount = cpu_to_le16(ses->server->maxReq);
@@ -2334,8 +2336,9 @@
 
        /* send SMBsessionSetup here */
        header_assemble(smb_buffer, SMB_COM_SESSION_SETUP_ANDX,
-                       NULL /* no tCon exists yet */ , 
GetNextMid(ses->server), 12 /* wct */ );
+                       NULL /* no tCon exists yet */ , 12 /* wct */ );
 
+       smb_buffer->Mid = GetNextMid(ses->server);
        pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC;
        pSMB->req.hdr.Flags |= (SMBFLG_CASELESS | SMBFLG_CANONICAL_PATH_FORMAT);
 
@@ -2667,8 +2670,9 @@
 
        /* send SMBsessionSetup here */
        header_assemble(smb_buffer, SMB_COM_SESSION_SETUP_ANDX,
-                       NULL /* no tCon exists yet */ , 
GetNextMid(ses->server), 12 /* wct */ );
+                       NULL /* no tCon exists yet */ , 12 /* wct */ );
 
+       smb_buffer->Mid = GetNextMid(ses->server);
        pSMB->req.hdr.Flags |= (SMBFLG_CASELESS | SMBFLG_CANONICAL_PATH_FORMAT);
        pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC;
        pSMB->req.AndXCommand = 0xFF;
@@ -3055,8 +3059,9 @@
        smb_buffer_response = smb_buffer;
 
        header_assemble(smb_buffer, SMB_COM_TREE_CONNECT_ANDX,
-                       NULL /*no tid */ , GetNextMid(ses->server), 4 /*wct */ 
);
+                       NULL /*no tid */ , 4 /*wct */ );
 
+       smb_buffer->Mid = GetNextMid(ses->server);
        smb_buffer->Uid = ses->Suid;
        pSMB = (TCONX_REQ *) smb_buffer;
        pSMBr = (TCONX_RSP *) smb_buffer_response;

Modified: branches/linux-2.6-cifs-git-devel/fs/cifs/misc.c
===================================================================
--- branches/linux-2.6-cifs-git-devel/fs/cifs/misc.c    2006-07-29 00:17:01 UTC 
(rev 67)
+++ branches/linux-2.6-cifs-git-devel/fs/cifs/misc.c    2006-08-11 22:04:45 UTC 
(rev 68)
@@ -291,7 +291,7 @@
    case it is responsbility of caller to set the mid */
 void
 header_assemble(struct smb_hdr *buffer, char smb_command /* command */ ,
-               const struct cifsTconInfo *treeCon, __u16 mid, int word_count
+               const struct cifsTconInfo *treeCon, int word_count
                /* length of fixed section (word count) in two byte units  */)
 {
        struct list_head* temp_item;
@@ -316,7 +316,6 @@
        buffer->Flags2 = SMBFLG2_KNOWS_LONG_NAMES;
        buffer->Pid = cpu_to_le16((__u16)current->tgid);
        buffer->PidHigh = cpu_to_le16((__u16)(current->tgid >> 16));
-       buffer->Mid = mid;
        spin_lock(&GlobalMid_Lock);
        spin_unlock(&GlobalMid_Lock);
        if (treeCon) {
@@ -329,6 +328,7 @@
                        }
                        /* Uid is not converted */
                        buffer->Uid = treeCon->ses->Suid;
+                       buffer->Mid = GetNextMid(treeCon->ses->server);
                        if(multiuser_mount != 0) {
                /* For the multiuser case, there are few obvious technically  */
                /* possible mechanisms to match the local linux user (uid)    */

Modified: branches/linux-2.6-cifs-git-devel/fs/cifs/transport.c
===================================================================
--- branches/linux-2.6-cifs-git-devel/fs/cifs/transport.c       2006-07-29 
00:17:01 UTC (rev 67)
+++ branches/linux-2.6-cifs-git-devel/fs/cifs/transport.c       2006-08-11 
22:04:45 UTC (rev 68)
@@ -781,8 +781,10 @@
 {
        int rc = 0;
        struct cifsSesInfo *ses = tcon->ses;
+       __u16 mid = in_buf->Mid;
 
-       header_assemble(in_buf, SMB_COM_NT_CANCEL, tcon, in_buf->Mid, 0);
+       header_assemble(in_buf, SMB_COM_NT_CANCEL, tcon, 0);
+       in_buf->Mid = mid;
        down(&ses->server->tcpSem); 
        rc = cifs_sign_smb(in_buf, ses->server, &midQ->sequence_number);
        if (rc) {

Reply via email to