DMA_MEM_TO_DEV, DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
        }
        if (!in_desc)
-               atmel_sha_complete(dd, -EINVAL);
+               return atmel_sha_complete(dd, -EINVAL);
 
        in_desc->callback = atmel_sha_dma_callback;
        in_desc->callback_param = dd;
        if (dma_mapping_error(dd->dev, ctx->dma_addr)) {
                dev_err(dd->dev, "dma %zu bytes error\n", ctx->buflen +
                                ctx->block_size);
-               atmel_sha_complete(dd, -EINVAL);
+               return atmel_sha_complete(dd, -EINVAL);
        }
 
        ctx->flags &= ~SHA_FLAGS_SG;
                if (dma_mapping_error(dd->dev, ctx->dma_addr)) {
                        dev_err(dd->dev, "dma %zu bytes error\n",
                                ctx->buflen + ctx->block_size);
-                       atmel_sha_complete(dd, -EINVAL);
+                       return atmel_sha_complete(dd, -EINVAL);
                }
 
                if (length == 0) {
                        if (!dma_map_sg(dd->dev, ctx->sg, 1,
                                DMA_TO_DEVICE)) {
                                        dev_err(dd->dev, "dma_map_sg  error\n");
-                                       atmel_sha_complete(dd, -EINVAL);
+                                       return atmel_sha_complete(dd, -EINVAL);
                        }
 
                        ctx->flags |= SHA_FLAGS_SG;
 
        if (!dma_map_sg(dd->dev, ctx->sg, 1, DMA_TO_DEVICE)) {
                dev_err(dd->dev, "dma_map_sg  error\n");
-               atmel_sha_complete(dd, -EINVAL);
+               return atmel_sha_complete(dd, -EINVAL);
        }
 
        ctx->flags |= SHA_FLAGS_SG;