Commit 094528b6 authored by Natalia Petrova's avatar Natalia Petrova Committed by Herbert Xu
Browse files

crypto: nitrox - avoid double free on error path in nitrox_sriov_init()



If alloc_workqueue() fails in nitrox_mbox_init() it deallocates
ndev->iov.vfdev and returns error code, but then nitrox_sriov_init()
calls nitrox_sriov_cleanup() where ndev->iov.vfdev is deallocated
again.

Fix this by nulling ndev->iov.vfdev after the first deallocation.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 9e5de3e0 ("crypto: cavium/nitrox - Add mailbox...")
Signed-off-by: default avatarNatalia Petrova <n.petrova@fintech.ru>
Signed-off-by: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 375de984
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -195,6 +195,7 @@ int nitrox_mbox_init(struct nitrox_device *ndev)
	ndev->iov.pf2vf_wq = alloc_workqueue("nitrox_pf2vf", 0, 0);
	if (!ndev->iov.pf2vf_wq) {
		kfree(ndev->iov.vfdev);
		ndev->iov.vfdev = NULL;
		return -ENOMEM;
	}
	/* enable pf2vf mailbox interrupts */