diff options
author | weongyo <weongyo@FreeBSD.org> | 2008-05-30 06:31:55 +0000 |
---|---|---|
committer | weongyo <weongyo@FreeBSD.org> | 2008-05-30 06:31:55 +0000 |
commit | 1ea90a0deae5bb3d69f5f91d039927b404236885 (patch) | |
tree | 0e809a765de58bf8494183f20ea20551afb34df6 | |
parent | 500241b6c642bd77dc5a1f751467dc7f1be9c902 (diff) | |
download | FreeBSD-src-1ea90a0deae5bb3d69f5f91d039927b404236885.zip FreeBSD-src-1ea90a0deae5bb3d69f5f91d039927b404236885.tar.gz |
Fix a panic that a priority value which is passed to cv_broadcastpri(9)
can be < 0. We don't ignore a `increment' argument but at least we keep
a priority value of NDIS threads over PRI_MIN_KERN.
Reviewed by: thompsa
-rw-r--r-- | sys/compat/ndis/subr_ntoskrnl.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/compat/ndis/subr_ntoskrnl.c b/sys/compat/ndis/subr_ntoskrnl.c index dd76d25..2f51242 100644 --- a/sys/compat/ndis/subr_ntoskrnl.c +++ b/sys/compat/ndis/subr_ntoskrnl.c @@ -1591,8 +1591,9 @@ ntoskrnl_waittest(obj, increment) } if (satisfied == TRUE) - cv_broadcastpri(&we->we_cv, w->wb_oldpri - - (increment * 4)); + cv_broadcastpri(&we->we_cv, + (w->wb_oldpri - (increment * 4)) > PRI_MIN_KERN ? + w->wb_oldpri - (increment * 4) : PRI_MIN_KERN); e = e->nle_flink; } @@ -3384,8 +3385,9 @@ KeSetEvent(kevent, increment, kwait) } } else { w->wb_awakened |= TRUE; - cv_broadcastpri(&we->we_cv, w->wb_oldpri - - (increment * 4)); + cv_broadcastpri(&we->we_cv, + (w->wb_oldpri - (increment * 4)) > PRI_MIN_KERN ? + w->wb_oldpri - (increment * 4) : PRI_MIN_KERN); } } |