summaryrefslogtreecommitdiff
path: root/xen
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2014-03-19 16:10:57 +0100
committerJustus Winter <4winter@informatik.uni-hamburg.de>2014-03-20 11:17:46 +0100
commit3ce4896345a3c339f159674ddf15e28b5072cb62 (patch)
tree6510432f2771da2944a98b8512822348867bccfb /xen
parent15af3b47e22c2c769afe5c8417c3f633baae6a6b (diff)
xen: fix error handling
Previously, the error KERN_RESOURCE_SHORTAGE was not properly propagated. Found using the Clang Static Analyzer. * xen/block.c (device_open): Fix error handling, remove unused label. * xen/net.c (device_open): Likewise.
Diffstat (limited to 'xen')
-rw-r--r--xen/block.c5
-rw-r--r--xen/net.c5
2 files changed, 4 insertions, 6 deletions
diff --git a/xen/block.c b/xen/block.c
index bd3758f9..d98b31e2 100644
--- a/xen/block.c
+++ b/xen/block.c
@@ -382,8 +382,8 @@ device_open (ipc_port_t reply_port, mach_msg_type_name_t reply_port_type,
port = ipc_port_alloc_kernel();
if (port == IP_NULL) {
- err = KERN_RESOURCE_SHORTAGE;
- goto out;
+ device_close(bd);
+ return KERN_RESOURCE_SHORTAGE;
}
bd->port = port;
@@ -396,7 +396,6 @@ device_open (ipc_port_t reply_port, mach_msg_type_name_t reply_port_type,
ipc_port_nsrequest (bd->port, 1, notify, &notify);
assert (notify == IP_NULL);
-out:
if (IP_VALID (reply_port))
ds_device_open_reply (reply_port, reply_port_type, D_SUCCESS, port);
else
diff --git a/xen/net.c b/xen/net.c
index fb264719..55643651 100644
--- a/xen/net.c
+++ b/xen/net.c
@@ -568,8 +568,8 @@ device_open (ipc_port_t reply_port, mach_msg_type_name_t reply_port_type,
port = ipc_port_alloc_kernel();
if (port == IP_NULL) {
- err = KERN_RESOURCE_SHORTAGE;
- goto out;
+ device_close (nd);
+ return KERN_RESOURCE_SHORTAGE;
}
nd->port = port;
@@ -582,7 +582,6 @@ device_open (ipc_port_t reply_port, mach_msg_type_name_t reply_port_type,
ipc_port_nsrequest (nd->port, 1, notify, &notify);
assert (notify == IP_NULL);
-out:
if (IP_VALID (reply_port))
ds_device_open_reply (reply_port, reply_port_type, D_SUCCESS, dev_to_port(nd));
else