]> Pileus Git - ~andy/linux/blobdiff - crypto/async_tx/async_memset.c
Merge commit 'v2.6.32'
[~andy/linux] / crypto / async_tx / async_memset.c
index b896a6e5f67320653a8393b0616d899d123e0338..58e4a8752aee52c06681bac43055f53586e3b3e1 100644 (file)
@@ -47,11 +47,14 @@ async_memset(struct page *dest, int val, unsigned int offset, size_t len,
        struct dma_device *device = chan ? chan->device : NULL;
        struct dma_async_tx_descriptor *tx = NULL;
 
-       if (device) {
+       if (device && is_dma_fill_aligned(device, offset, 0, len)) {
                dma_addr_t dma_dest;
-               unsigned long dma_prep_flags;
+               unsigned long dma_prep_flags = 0;
 
-               dma_prep_flags = submit->cb_fn ? DMA_PREP_INTERRUPT : 0;
+               if (submit->cb_fn)
+                       dma_prep_flags |= DMA_PREP_INTERRUPT;
+               if (submit->flags & ASYNC_TX_FENCE)
+                       dma_prep_flags |= DMA_PREP_FENCE;
                dma_dest = dma_map_page(device->dev, dest, offset, len,
                                        DMA_FROM_DEVICE);