kernel/disk drivers: Add some missing crit_exit()s.
authorSascha Wildner <saw@online.de>
Mon, 2 Jan 2012 01:26:29 +0000 (02:26 +0100)
committerSascha Wildner <saw@online.de>
Mon, 2 Jan 2012 01:26:29 +0000 (02:26 +0100)
sys/dev/disk/buslogic/bt.c
sys/dev/disk/ncr/ncr.c
sys/dev/disk/sbp/sbp.c

index fa3dae8..e0fe2e3 100644 (file)
@@ -1466,6 +1466,7 @@ btexecuteccb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
                xpt_freeze_simq(bt->sim, /*count*/1);
                ccb->ccb_h.status = CAM_REQUEUE_REQ;
                xpt_done(ccb);
+               crit_exit();
                return;
        }
        bt->cur_outbox->action_code = BMBO_START;       
index 1fc5476..95aed29 100644 (file)
@@ -3905,6 +3905,7 @@ ncr_action (struct cam_sim *sim, union ccb *ccb)
                        /* XXX JGibbs - Freeze SIMQ */
                        ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
                        xpt_done(ccb);
+                       crit_exit();
                        return;
                };
                
index d66b6d8..34adfa6 100644 (file)
@@ -2668,6 +2668,7 @@ sbp_get_ocb(struct sbp_dev *sdev)
        ocb = STAILQ_FIRST(&sdev->free_ocbs);
        if (ocb == NULL) {
                kprintf("ocb shortage!!!\n");
+               crit_exit();
                return NULL;
        }
        STAILQ_REMOVE_HEAD(&sdev->free_ocbs, ocb);