Page MenuHomeFreeBSD

D31995.id100904.diff
No OneTemporary

D31995.id100904.diff

Index: sys/x86/xen/xen_intr.c
===================================================================
--- sys/x86/xen/xen_intr.c
+++ sys/x86/xen/xen_intr.c
@@ -299,8 +299,9 @@
vector = first_evtchn_irq + isrc_idx;
isrc = (struct xenisrc *)intr_lookup_source(vector);
- if (isrc != NULL
- && isrc->xi_type == EVTCHN_TYPE_UNBOUND) {
+ if (__predict_true(isrc != NULL) &&
+ __predict_true(isrc->xi_intsrc.is_pic == &xen_intr_pic) &&
+ isrc->xi_type == EVTCHN_TYPE_UNBOUND) {
KASSERT(isrc->xi_intsrc.is_handlers == 0,
("Free evtchn still has handlers"));
isrc->xi_type = type;
@@ -352,7 +353,12 @@
isrc->xi_intsrc.is_pic = &xen_intr_pic;
isrc->xi_vector = vector;
isrc->xi_type = type;
- intr_register_source(&isrc->xi_intsrc);
+ if (__predict_false(intr_register_source(&isrc->xi_intsrc) != 0)) {
+ free(isrc, M_XENINTR);
+ printf("%s(): WARNING failed to register IRQ %u\n", __func__,
+ vector);
+ return (NULL);
+ }
return (isrc);
}

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 23, 7:03 AM (16 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17724386
Default Alt Text
D31995.id100904.diff (985 B)

Event Timeline