Check the return value of cifs_sign_smb[2]
authorVolker Lendecke <vl@samba.org>
Sat, 6 Dec 2008 15:00:53 +0000 (16:00 +0100)
committerSteve French <sfrench@us.ibm.com>
Fri, 26 Dec 2008 02:29:12 +0000 (02:29 +0000)
Check the return value of cifs_sign_smb[2]

Signed-off-by: Volker Lendecke <vl@samba.org>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/transport.c

index 5f224e999585e1221a672495742fffc302a9ba00..dc2d1b0bba58a343be154b03abad5fd87dceef76 100644 (file)
@@ -530,6 +530,11 @@ SendReceive2(const unsigned int xid, struct cifsSesInfo *ses,
                return rc;
        }
        rc = cifs_sign_smb2(iov, n_vec, ses->server, &midQ->sequence_number);
+       if (rc) {
+               mutex_unlock(&ses->server->srv_mutex);
+               cifs_small_buf_release(in_buf);
+               goto out;
+       }
 
        midQ->midState = MID_REQUEST_SUBMITTED;
 #ifdef CONFIG_CIFS_STATS2
@@ -718,6 +723,10 @@ SendReceive(const unsigned int xid, struct cifsSesInfo *ses,
        }
 
        rc = cifs_sign_smb(in_buf, ses->server, &midQ->sequence_number);
+       if (rc) {
+               mutex_unlock(&ses->server->srv_mutex);
+               goto out;
+       }
 
        midQ->midState = MID_REQUEST_SUBMITTED;
 #ifdef CONFIG_CIFS_STATS2
@@ -948,6 +957,11 @@ SendReceiveBlockingLock(const unsigned int xid, struct cifsTconInfo *tcon,
        }
 
        rc = cifs_sign_smb(in_buf, ses->server, &midQ->sequence_number);
+       if (rc) {
+               DeleteMidQEntry(midQ);
+               mutex_unlock(&ses->server->srv_mutex);
+               return rc;
+       }
 
        midQ->midState = MID_REQUEST_SUBMITTED;
 #ifdef CONFIG_CIFS_STATS2