]> err.no Git - linux-2.6/blobdiff - fs/cifs/cifssmb.c
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
[linux-2.6] / fs / cifs / cifssmb.c
index a7d3d8e5c6c5d849e1a2fb35f6dca146093d7256..57419a176688356cec33d80e2c89d22b13d0fedc 100644 (file)
@@ -433,8 +433,8 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses)
        cFYI(1,("secFlags 0x%x",secFlags));
 
        pSMB->hdr.Mid = GetNextMid(server);
-       pSMB->hdr.Flags2 |= SMBFLG2_UNICODE;
-       if((secFlags & CIFSSEC_MUST_KRB5) == CIFSSEC_MUST_KRB5)
+       pSMB->hdr.Flags2 |= (SMBFLG2_UNICODE | SMBFLG2_ERR_STATUS);
+       if ((secFlags & CIFSSEC_MUST_KRB5) == CIFSSEC_MUST_KRB5)
                pSMB->hdr.Flags2 |= SMBFLG2_EXT_SEC;
        
        count = 0;
@@ -1008,9 +1008,12 @@ PsxCreat:
        if(cpu_to_le32(FILE_CREATE) == psx_rsp->CreateAction)
                *pOplock |= CIFS_CREATE_ACTION;
        /* check to make sure response data is there */
-       if(psx_rsp->ReturnedLevel != SMB_QUERY_FILE_UNIX_BASIC)
-               pRetData->Type = -1; /* unknown */              
-       else {
+       if(psx_rsp->ReturnedLevel != SMB_QUERY_FILE_UNIX_BASIC) {
+               pRetData->Type = -1; /* unknown */
+#ifdef CONFIG_CIFS_DEBUG2
+               cFYI(1,("unknown type"));
+#endif
+       } else {
                if(pSMBr->ByteCount < sizeof(OPEN_PSX_RSP) 
                                        + sizeof(FILE_UNIX_BASIC_INFO)) {
                        cERROR(1,("Open response data too small"));
@@ -1018,7 +1021,7 @@ PsxCreat:
                        goto psx_create_err;
                }
                memcpy((char *) pRetData, 
-                       (char *)&psx_rsp + sizeof(OPEN_PSX_RSP),
+                       (char *)psx_rsp + sizeof(OPEN_PSX_RSP),
                        sizeof (FILE_UNIX_BASIC_INFO));
        }