Page MenuHomeFreeBSD

D33888.diff
No OneTemporary

D33888.diff

diff --git a/sys/compat/linuxkpi/common/src/linux_schedule.c b/sys/compat/linuxkpi/common/src/linux_schedule.c
--- a/sys/compat/linuxkpi/common/src/linux_schedule.c
+++ b/sys/compat/linuxkpi/common/src/linux_schedule.c
@@ -202,9 +202,11 @@
linux_wake_up(wait_queue_head_t *wqh, unsigned int state, int nr, bool locked)
{
wait_queue_t *pos, *next;
+ unsigned long flags;
if (!locked)
- spin_lock(&wqh->lock);
+ spin_lock_irqsave(&wqh->lock, flags);
+
list_for_each_entry_safe(pos, next, &wqh->task_list, task_list) {
if (pos->func == NULL) {
if (wake_up_task(pos->private, state) != 0 && --nr == 0)
@@ -215,7 +217,7 @@
}
}
if (!locked)
- spin_unlock(&wqh->lock);
+ spin_unlock_irqrestore(&wqh->lock, flags);
}
void

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 3, 6:32 PM (3 h, 38 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
13458759
Default Alt Text
D33888.diff (747 B)

Event Timeline