Page MenuHomeFreeBSD

D4114.id10099.diff
No OneTemporary

D4114.id10099.diff

Index: sys/x86/x86/intr_machdep.c
===================================================================
--- sys/x86/x86/intr_machdep.c
+++ sys/x86/x86/intr_machdep.c
@@ -202,14 +202,19 @@
isrc = intr_handler_source(cookie);
error = intr_event_remove_handler(cookie);
if (error == 0) {
- mtx_lock(&intr_table_lock);
+ int mtx_owned;
+
+ mtx_owned = mtx_owned(&intr_table_lock);
+ if (!mtx_owned)
+ mtx_lock(&intr_table_lock);
isrc->is_handlers--;
if (isrc->is_handlers == 0) {
isrc->is_pic->pic_disable_source(isrc, PIC_NO_EOI);
isrc->is_pic->pic_disable_intr(isrc);
}
intrcnt_updatename(isrc);
- mtx_unlock(&intr_table_lock);
+ if (!mtx_owned)
+ mtx_unlock(&intr_table_lock);
}
return (error);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 23, 8:37 AM (5 h, 40 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24087139
Default Alt Text
D4114.id10099.diff (735 B)

Event Timeline