Page MenuHomeFreeBSD

D33623.diff
No OneTemporary

D33623.diff

Index: sys/xen/xen_intr.c
===================================================================
--- sys/xen/xen_intr.c
+++ sys/xen/xen_intr.c
@@ -396,13 +396,18 @@
*isrcp = NULL;
if (port_handlep == NULL) {
+ xen_intr_handle_t discard;
printf("%s: %s: Bad event handle\n", intr_owner, __func__);
- return (EINVAL);
+ port_handlep = &discard;
+ error = EINVAL;
+ goto failearly;
}
isrc = xen_intr_alloc_isrc(params);
- if (isrc == NULL)
- return (ENOSPC);
+ if (isrc == NULL) {
+ error = ENOSPC;
+ goto failearly;
+ }
refcount_init(&isrc->xi_refcount, 1);
cpu = isrc->xi_cpu;
mtx_lock(&xen_intr_isrc_lock);
@@ -428,10 +433,8 @@
}
error = xen_arch_intr_event_bind(isrc, cpu);
- if (error != 0) { /* *very* unlikely */
- xen_intr_release_isrc(isrc);
- return (error);
- }
+ if (error != 0) /* *very* unlikely */
+ goto failrelease;
if (isrc->xi_cpu != cpu) {
/*
@@ -456,12 +459,17 @@
error = xen_intr_add_handler(intr_owner, filter, handler, arg, flags,
*port_handlep);
- if (error != 0) {
- xen_intr_release_isrc(isrc);
- return (error);
- }
+ if (error != 0)
+ goto failrelease;
*isrcp = isrc;
return (0);
+
+failrelease:
+ xen_intr_release_isrc(isrc);
+
+failearly:
+ *port_handlep = NULL;
+ return (error);
}
/**

File Metadata

Mime Type
text/plain
Expires
Sat, Apr 11, 6:06 PM (9 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31301271
Default Alt Text
D33623.diff (1 KB)

Event Timeline