mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
mtip32xx: Unmap the DMA segments before completing the IO request
If the buffers are unmapped after completing a request, then stale data might be in the request. Signed-off-by: Felipe Franciosi <felipe@paradoxo.org> Cc: stable@kernel.org Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
1044b1bb92
commit
368c89d7ac
1 changed files with 12 additions and 12 deletions
|
@ -266,6 +266,12 @@ static void mtip_async_complete(struct mtip_port *port,
|
|||
"Command tag %d failed due to TFE\n", tag);
|
||||
}
|
||||
|
||||
/* Unmap the DMA scatter list entries */
|
||||
dma_unmap_sg(&dd->pdev->dev,
|
||||
command->sg,
|
||||
command->scatter_ents,
|
||||
command->direction);
|
||||
|
||||
/* Upper layer callback */
|
||||
if (likely(command->async_callback))
|
||||
command->async_callback(command->async_data, cb_status);
|
||||
|
@ -273,12 +279,6 @@ static void mtip_async_complete(struct mtip_port *port,
|
|||
command->async_callback = NULL;
|
||||
command->comp_func = NULL;
|
||||
|
||||
/* Unmap the DMA scatter list entries */
|
||||
dma_unmap_sg(&dd->pdev->dev,
|
||||
command->sg,
|
||||
command->scatter_ents,
|
||||
command->direction);
|
||||
|
||||
/* Clear the allocated and active bits for the command */
|
||||
atomic_set(&port->commands[tag].active, 0);
|
||||
release_slot(port, tag);
|
||||
|
@ -709,6 +709,12 @@ static void mtip_timeout_function(unsigned long int data)
|
|||
*/
|
||||
writel(1 << bit, port->completed[group]);
|
||||
|
||||
/* Unmap the DMA scatter list entries */
|
||||
dma_unmap_sg(&port->dd->pdev->dev,
|
||||
command->sg,
|
||||
command->scatter_ents,
|
||||
command->direction);
|
||||
|
||||
/* Call the async completion callback. */
|
||||
if (likely(command->async_callback))
|
||||
command->async_callback(command->async_data,
|
||||
|
@ -716,12 +722,6 @@ static void mtip_timeout_function(unsigned long int data)
|
|||
command->async_callback = NULL;
|
||||
command->comp_func = NULL;
|
||||
|
||||
/* Unmap the DMA scatter list entries */
|
||||
dma_unmap_sg(&port->dd->pdev->dev,
|
||||
command->sg,
|
||||
command->scatter_ents,
|
||||
command->direction);
|
||||
|
||||
/*
|
||||
* Clear the allocated bit and active tag for the
|
||||
* command.
|
||||
|
|
Loading…
Reference in a new issue