|
@@ -1626,7 +1626,9 @@ smb2_echo_callback(struct mid_q_entry *mid)
|
|
|
if (mid->mid_state == MID_RESPONSE_RECEIVED)
|
|
|
credits_received = le16_to_cpu(smb2->hdr.CreditRequest);
|
|
|
|
|
|
+ mutex_lock(&server->srv_mutex);
|
|
|
DeleteMidQEntry(mid);
|
|
|
+ mutex_unlock(&server->srv_mutex);
|
|
|
add_credits(server, credits_received, CIFS_ECHO_OP);
|
|
|
}
|
|
|
|
|
@@ -1810,7 +1812,9 @@ smb2_readv_callback(struct mid_q_entry *mid)
|
|
|
cifs_stats_fail_inc(tcon, SMB2_READ_HE);
|
|
|
|
|
|
queue_work(cifsiod_wq, &rdata->work);
|
|
|
+ mutex_lock(&server->srv_mutex);
|
|
|
DeleteMidQEntry(mid);
|
|
|
+ mutex_unlock(&server->srv_mutex);
|
|
|
add_credits(server, credits_received, 0);
|
|
|
}
|
|
|
|
|
@@ -1938,6 +1942,7 @@ smb2_writev_callback(struct mid_q_entry *mid)
|
|
|
{
|
|
|
struct cifs_writedata *wdata = mid->callback_data;
|
|
|
struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink);
|
|
|
+ struct TCP_Server_Info *server = tcon->ses->server;
|
|
|
unsigned int written;
|
|
|
struct smb2_write_rsp *rsp = (struct smb2_write_rsp *)mid->resp_buf;
|
|
|
unsigned int credits_received = 1;
|
|
@@ -1977,7 +1982,9 @@ smb2_writev_callback(struct mid_q_entry *mid)
|
|
|
cifs_stats_fail_inc(tcon, SMB2_WRITE_HE);
|
|
|
|
|
|
queue_work(cifsiod_wq, &wdata->work);
|
|
|
+ mutex_lock(&server->srv_mutex);
|
|
|
DeleteMidQEntry(mid);
|
|
|
+ mutex_unlock(&server->srv_mutex);
|
|
|
add_credits(tcon->ses->server, credits_received, 0);
|
|
|
}
|
|
|
|