mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 22:14:04 +02:00
crypto: qat - Fix a double free in adf_create_ring
[ Upstream commitf7cae626ca] In adf_create_ring, if the callee adf_init_ring() failed, the callee will free the ring->base_addr by dma_free_coherent() and return -EFAULT. Then adf_create_ring will goto err and the ring->base_addr will be freed again in adf_cleanup_ring(). My patch sets ring->base_addr to NULL after the first freed to avoid the double free. Fixes:a672a9dc87("crypto: qat - Intel(R) QAT transport code") Signed-off-by: Lv Yunlong <lyl2019@mail.ustc.edu.cn> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
0e596b3734
commit
1faf7e6199
|
|
@ -153,6 +153,7 @@ static int adf_init_ring(struct adf_etr_ring_data *ring)
|
||||||
dev_err(&GET_DEV(accel_dev), "Ring address not aligned\n");
|
dev_err(&GET_DEV(accel_dev), "Ring address not aligned\n");
|
||||||
dma_free_coherent(&GET_DEV(accel_dev), ring_size_bytes,
|
dma_free_coherent(&GET_DEV(accel_dev), ring_size_bytes,
|
||||||
ring->base_addr, ring->dma_addr);
|
ring->base_addr, ring->dma_addr);
|
||||||
|
ring->base_addr = NULL;
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user