mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-16 10:20:30 +00:00
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
This commit is contained in:
parent
c98a6e4f7b
commit
0642b69a16
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=52324
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user