|
|
@@ -215,17 +215,18 @@ static void sec_free_hw_sgl(struct sec_hw_sgl *hw_sgl,
|
|
|
dma_addr_t psec_sgl, struct sec_dev_info *info)
|
|
|
{
|
|
|
struct sec_hw_sgl *sgl_current, *sgl_next;
|
|
|
+ dma_addr_t sgl_next_dma;
|
|
|
|
|
|
- if (!hw_sgl)
|
|
|
- return;
|
|
|
sgl_current = hw_sgl;
|
|
|
- while (sgl_current->next) {
|
|
|
+ while (sgl_current) {
|
|
|
sgl_next = sgl_current->next;
|
|
|
- dma_pool_free(info->hw_sgl_pool, sgl_current,
|
|
|
- sgl_current->next_sgl);
|
|
|
+ sgl_next_dma = sgl_current->next_sgl;
|
|
|
+
|
|
|
+ dma_pool_free(info->hw_sgl_pool, sgl_current, psec_sgl);
|
|
|
+
|
|
|
sgl_current = sgl_next;
|
|
|
+ psec_sgl = sgl_next_dma;
|
|
|
}
|
|
|
- dma_pool_free(info->hw_sgl_pool, hw_sgl, psec_sgl);
|
|
|
}
|
|
|
|
|
|
static int sec_alg_skcipher_setkey(struct crypto_skcipher *tfm,
|