summaryrefslogtreecommitdiff
path: root/drivers/xen/blkback/blkback.c
diff options
context:
space:
mode:
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2009-10-08 13:23:09 -0400
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-04-14 18:26:07 -0400
commit8770b2683f9f98d4c1d6caf2e28f625592bba4f3 (patch)
treec0802accb3d22c29aaba1dc6428b0d77458a9897 /drivers/xen/blkback/blkback.c
parentafd91d07ff72919071e37086c0664384b3875688 (diff)
downloadlwn-8770b2683f9f98d4c1d6caf2e28f625592bba4f3.tar.gz
lwn-8770b2683f9f98d4c1d6caf2e28f625592bba4f3.zip
Fix compile warnings: ignoring return value of 'xenbus_register_backend' ..
We neglect to check the return value of xenbus_register_backend and take actions when that fails. This patch fixes that and adds code to deal with those type of failures. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Diffstat (limited to 'drivers/xen/blkback/blkback.c')
-rw-r--r--drivers/xen/blkback/blkback.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/xen/blkback/blkback.c b/drivers/xen/blkback/blkback.c
index e9e3de119a73..a2ac7189cc0a 100644
--- a/drivers/xen/blkback/blkback.c
+++ b/drivers/xen/blkback/blkback.c
@@ -614,6 +614,7 @@ static void make_response(blkif_t *blkif, u64 id,
static int __init blkif_init(void)
{
int i, mmap_pages;
+ int rc = 0;
if (!xen_pv_domain())
return -ENODEV;
@@ -626,13 +627,17 @@ static int __init blkif_init(void)
mmap_pages, GFP_KERNEL);
pending_pages = alloc_empty_pages_and_pagevec(mmap_pages);
- if (!pending_reqs || !pending_grant_handles || !pending_pages)
+ if (!pending_reqs || !pending_grant_handles || !pending_pages) {
+ rc = -ENOMEM;
goto out_of_memory;
+ }
for (i = 0; i < mmap_pages; i++)
pending_grant_handles[i] = BLKBACK_INVALID_HANDLE;
- blkif_interface_init();
+ rc = blkif_interface_init();
+ if (rc)
+ goto failed_init;
memset(pending_reqs, 0, sizeof(pending_reqs));
INIT_LIST_HEAD(&pending_free);
@@ -640,16 +645,19 @@ static int __init blkif_init(void)
for (i = 0; i < blkif_reqs; i++)
list_add_tail(&pending_reqs[i].free_list, &pending_free);
- blkif_xenbus_init();
+ rc = blkif_xenbus_init();
+ if (rc)
+ goto failed_init;
return 0;
out_of_memory:
+ printk(KERN_ERR "%s: out of memory\n", __func__);
+ failed_init:
kfree(pending_reqs);
kfree(pending_grant_handles);
free_empty_pages_and_pagevec(pending_pages, mmap_pages);
- printk("%s: out of memory\n", __FUNCTION__);
- return -ENOMEM;
+ return rc;
}
module_init(blkif_init);