diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2014-03-19 16:10:57 +0100 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2014-03-20 11:17:46 +0100 |
commit | 3ce4896345a3c339f159674ddf15e28b5072cb62 (patch) | |
tree | 6510432f2771da2944a98b8512822348867bccfb /xen | |
parent | 15af3b47e22c2c769afe5c8417c3f633baae6a6b (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.c | 5 | ||||
-rw-r--r-- | xen/net.c | 5 |
2 files changed, 4 insertions, 6 deletions
diff --git a/xen/block.c b/xen/block.c index bd3758f..d98b31e 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, ¬ify); assert (notify == IP_NULL); -out: if (IP_VALID (reply_port)) ds_device_open_reply (reply_port, reply_port_type, D_SUCCESS, port); else @@ -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, ¬ify); 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 |