summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2010-06-05 08:58:03 +0000
committermav <mav@FreeBSD.org>2010-06-05 08:58:03 +0000
commit505be0fb99a50bf686c944a41f16115657cdd264 (patch)
treeda07853283ab1aab5c1678582328aad9647078e7 /sys/dev/ata
parent0bb05a5f0f0a755e886190a45ec1c2d9164f9a2d (diff)
downloadFreeBSD-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.c4
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) {
OpenPOWER on IntegriCloud