From 25ab9f2150fa1e7e374781b5a5da9d5058a6efcf Mon Sep 17 00:00:00 2001 From: mjacob Date: Sat, 16 Oct 1999 23:31:34 +0000 Subject: Protect xpt_run_dev_sendq in xpt_release_devq_device with splsoftcam. This seems to handle the case of timeouts firing during probe but after a device has gone away. It really does help. Obtained from:gibbs@freebsd.org --- sys/cam/cam_xpt.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/cam/cam_xpt.c b/sys/cam/cam_xpt.c index 03ba677..466af40 100644 --- a/sys/cam/cam_xpt.c +++ b/sys/cam/cam_xpt.c @@ -4350,10 +4350,11 @@ static void xpt_release_devq_device(struct cam_ed *dev, u_int count, int run_queue) { int rundevq; - int s; + int s0, s1; rundevq = 0; - s = splcam(); + s0 = splsoftcam(); + s1 = splcam(); if (dev->qfrozen_cnt > 0) { count = (count > dev->qfrozen_cnt) ? dev->qfrozen_cnt : count; @@ -4388,9 +4389,10 @@ xpt_release_devq_device(struct cam_ed *dev, u_int count, int run_queue) } } } - splx(s); + splx(s1); if (rundevq != 0) xpt_run_dev_sendq(dev->target->bus); + splx(s0); } void -- cgit v1.1