mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 12:35:52 +02:00
smb: client: make sure we call ib_dma_unmap_single() only if we called ib_dma_map_single already
In case of failures either ib_dma_map_single() might not be called yet
or ib_dma_unmap_single() was already called.
We should make sure put_receive_buffer() only calls
ib_dma_unmap_single() if needed.
Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Fixes: f198186aa9 ("CIFS: SMBD: Establish SMB Direct connection")
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
24b6afc36d
commit
047682c370
|
|
@ -1057,6 +1057,7 @@ static int smbd_post_recv(
|
|||
if (rc) {
|
||||
ib_dma_unmap_single(sc->ib.dev, response->sge.addr,
|
||||
response->sge.length, DMA_FROM_DEVICE);
|
||||
response->sge.length = 0;
|
||||
smbd_disconnect_rdma_connection(info);
|
||||
log_rdma_recv(ERR, "ib_post_recv failed rc=%d\n", rc);
|
||||
}
|
||||
|
|
@ -1186,8 +1187,13 @@ static void put_receive_buffer(
|
|||
struct smbdirect_socket *sc = &info->socket;
|
||||
unsigned long flags;
|
||||
|
||||
ib_dma_unmap_single(sc->ib.dev, response->sge.addr,
|
||||
response->sge.length, DMA_FROM_DEVICE);
|
||||
if (likely(response->sge.length != 0)) {
|
||||
ib_dma_unmap_single(sc->ib.dev,
|
||||
response->sge.addr,
|
||||
response->sge.length,
|
||||
DMA_FROM_DEVICE);
|
||||
response->sge.length = 0;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&info->receive_queue_lock, flags);
|
||||
list_add_tail(&response->list, &info->receive_queue);
|
||||
|
|
@ -1221,6 +1227,7 @@ static int allocate_receive_buffers(struct smbd_connection *info, int num_buf)
|
|||
goto allocate_failed;
|
||||
|
||||
response->info = info;
|
||||
response->sge.length = 0;
|
||||
list_add_tail(&response->list, &info->receive_queue);
|
||||
info->count_receive_queue++;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user