Skip to content

Commit 1dc2b3d

Browse files
Colin Ian Kingdavem330
authored andcommitted
qede: fix write to free'd pointer error and double free of ptp
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: 0357449 ("qede: Add support for PTP resource locking.") Signed-off-by: Colin Ian King <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 0a2c34f commit 1dc2b3d

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

drivers/net/ethernet/qlogic/qede/qede_ptp.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -490,18 +490,17 @@ int qede_ptp_enable(struct qede_dev *edev, bool init_tc)
490490

491491
ptp->clock = ptp_clock_register(&ptp->clock_info, &edev->pdev->dev);
492492
if (IS_ERR(ptp->clock)) {
493-
rc = -EINVAL;
494493
DP_ERR(edev, "PTP clock registration failed\n");
494+
qede_ptp_disable(edev);
495+
rc = -EINVAL;
495496
goto err2;
496497
}
497498

498499
return 0;
499500

500-
err2:
501-
qede_ptp_disable(edev);
502-
ptp->clock = NULL;
503501
err1:
504502
kfree(ptp);
503+
err2:
505504
edev->ptp = NULL;
506505

507506
return rc;

0 commit comments

Comments
 (0)