mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
qede: fix write to free'd pointer error and double free of ptp
[ Upstream commit1dc2b3d655] The err2 error return path calls qede_ptp_disable that cleans up on an error and frees ptp. After this, the free'd ptp is dereferenced when ptp->clock is set to NULL and the code falls-through to error path err1 that frees ptp again. Fix this by calling qede_ptp_disable and exiting via an error return path that does not set ptp->clock or kfree ptp. Addresses-Coverity: ("Write to pointer after free") Fixes:035744975a("qede: Add support for PTP resource locking.") Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
090b740200
commit
08f2c299b3
@@ -490,18 +490,17 @@ int qede_ptp_enable(struct qede_dev *edev, bool init_tc)
|
||||
|
||||
ptp->clock = ptp_clock_register(&ptp->clock_info, &edev->pdev->dev);
|
||||
if (IS_ERR(ptp->clock)) {
|
||||
rc = -EINVAL;
|
||||
DP_ERR(edev, "PTP clock registration failed\n");
|
||||
qede_ptp_disable(edev);
|
||||
rc = -EINVAL;
|
||||
goto err2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err2:
|
||||
qede_ptp_disable(edev);
|
||||
ptp->clock = NULL;
|
||||
err1:
|
||||
kfree(ptp);
|
||||
err2:
|
||||
edev->ptp = NULL;
|
||||
|
||||
return rc;
|
||||
|
||||
Reference in New Issue
Block a user