]> git.baikalelectronics.ru Git - kernel.git/commit
crypto: hisilicon - Fix double free in sec_free_hw_sgl()
authorYunfeng Ye <yeyunfeng@huawei.com>
Sun, 15 Sep 2019 09:26:56 +0000 (17:26 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 20 Sep 2019 12:53:09 +0000 (22:53 +1000)
commit0d468fe8d06222f95494c4684cf88e5fa590ead3
tree4804c4ff1f60db3a56664d538a659010cc5bcc30
parent7d6e8d69b7371e1aa0bbd75a755cf24b6a526a69
crypto: hisilicon - Fix double free in sec_free_hw_sgl()

There are two problems in sec_free_hw_sgl():

First, when sgl_current->next is valid, @hw_sgl will be freed in the
first loop, but it free again after the loop.

Second, sgl_current and sgl_current->next_sgl is not match when
dma_pool_free() is invoked, the third parameter should be the dma
address of sgl_current, but sgl_current->next_sgl is the dma address
of next chain, so use sgl_current->next_sgl is wrong.

Fix this by deleting the last dma_pool_free() in sec_free_hw_sgl(),
modifying the condition for while loop, and matching the address for
dma_pool_free().

Fixes: f55bae397ca7 ("crypto: hisilicon - SEC security accelerator driver")
Signed-off-by: Yunfeng Ye <yeyunfeng@huawei.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/hisilicon/sec/sec_algs.c