• Yunfeng Ye's avatar
    crypto: hisilicon - Fix double free in sec_free_hw_sgl() · 24fbf7ba
    Yunfeng Ye authored
    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: 915e4e84 ("crypto: hisilicon - SEC security accelerator driver")
    Signed-off-by: default avatarYunfeng Ye <yeyunfeng@huawei.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    24fbf7ba
sec_algs.c 29.1 KB