diff options
author | mav <mav@FreeBSD.org> | 2010-06-05 08:58:03 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2010-06-05 08:58:03 +0000 |
commit | 505be0fb99a50bf686c944a41f16115657cdd264 (patch) | |
tree | da07853283ab1aab5c1678582328aad9647078e7 /sys/dev/ata | |
parent | 0bb05a5f0f0a755e886190a45ec1c2d9164f9a2d (diff) | |
download | FreeBSD-src-505be0fb99a50bf686c944a41f16115657cdd264.zip FreeBSD-src-505be0fb99a50bf686c944a41f16115657cdd264.tar.gz |
Fix possible use after free.
Found with: Coverity Prevent(tm)
CID: 4634
Diffstat (limited to 'sys/dev/ata')
-rw-r--r-- | sys/dev/ata/atapi-cam.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/ata/atapi-cam.c b/sys/dev/ata/atapi-cam.c index e5b002a8..bce8625 100644 --- a/sys/dev/ata/atapi-cam.c +++ b/sys/dev/ata/atapi-cam.c @@ -868,11 +868,11 @@ free_hcb(struct atapi_hcb *hcb) static void free_softc(struct atapi_xpt_softc *scp) { - struct atapi_hcb *hcb; + struct atapi_hcb *hcb, *thcb; if (scp != NULL) { mtx_lock(&scp->state_lock); - TAILQ_FOREACH(hcb, &scp->pending_hcbs, chain) { + TAILQ_FOREACH_SAFE(hcb, &scp->pending_hcbs, chain, thcb) { free_hcb_and_ccb_done(hcb, CAM_UNREC_HBA_ERROR); } if (scp->path != NULL) { |