mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-14 10:09:48 +00:00
The function request_cleanup() had a tsleep() with PCATCH. It is
quite dangerous, since the process may hold locks at the point, and if it is stopped in that tsleep the machine may hang. Because the sleep is so short, the PCATCH is not required here, so it has been removed. For the future, the FreeBSD team needs to decide whether it is still reasonable to stop a process in tsleep, as that may affect any other code that uses PCATCH while holding kernel locks. Submitted by: Dmitrij Tejblum <tejblum@arc.hq.cti.ru> Reviewed by: Kirk McKusick <mckusick@mckusick.com>
This commit is contained in:
parent
346b6c5db8
commit
6a4152243f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=54700
@ -4252,7 +4252,7 @@ request_cleanup(resource, islocked)
|
||||
tickdelay > 2 ? tickdelay : 2);
|
||||
}
|
||||
FREE_LOCK_INTERLOCKED(&lk);
|
||||
(void) tsleep((caddr_t)&proc_waiting, PPAUSE | PCATCH, "softupdate", 0);
|
||||
(void) tsleep((caddr_t)&proc_waiting, PPAUSE, "softupdate", 0);
|
||||
ACQUIRE_LOCK_INTERLOCKED(&lk);
|
||||
if (proc_waiting) {
|
||||
untimeout(pause_timer, NULL, handle);
|
||||
|
@ -4252,7 +4252,7 @@ request_cleanup(resource, islocked)
|
||||
tickdelay > 2 ? tickdelay : 2);
|
||||
}
|
||||
FREE_LOCK_INTERLOCKED(&lk);
|
||||
(void) tsleep((caddr_t)&proc_waiting, PPAUSE | PCATCH, "softupdate", 0);
|
||||
(void) tsleep((caddr_t)&proc_waiting, PPAUSE, "softupdate", 0);
|
||||
ACQUIRE_LOCK_INTERLOCKED(&lk);
|
||||
if (proc_waiting) {
|
||||
untimeout(pause_timer, NULL, handle);
|
||||
|
Loading…
Reference in New Issue
Block a user