RDMA/ocrdma: Fix warnings about uninitialized variables
authorRoland Dreier <roland@purestorage.com>
Mon, 16 Apr 2012 18:32:17 +0000 (11:32 -0700)
committerRoland Dreier <roland@purestorage.com>
Tue, 8 May 2012 18:17:47 +0000 (11:17 -0700)
First, fix

    drivers/infiniband/hw/ocrdma/ocrdma_verbs.c: In function 'ocrdma_alloc_pd':
    drivers/infiniband/hw/ocrdma/ocrdma_verbs.c:371:17: warning: 'dpp_page_addr' may be used uninitialized in this function [-Wuninitialized]
    drivers/infiniband/hw/ocrdma/ocrdma_verbs.c:337:6: note: 'dpp_page_addr' was declared here

which seems that it may border on a bug (the call to ocrdma_del_mmap()
might conceivably do bad things if pd->dpp_enabled is not set and
dpp_page_addr ends up with just the wrong value).

Also take care of:

    drivers/infiniband/hw/ocrdma/ocrdma_hw.c: In function 'ocrdma_init_hw':
    drivers/infiniband/hw/ocrdma/ocrdma_hw.c:2587:5: warning: 'status' may be used uninitialized in this function [-Wuninitialized]
    drivers/infiniband/hw/ocrdma/ocrdma_hw.c:2549:17: note: 'status' was declared here

which is only real if num_eq == 0, which should be impossible.

Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/ocrdma/ocrdma_hw.c
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c

index c53545f..025c4a9 100644 (file)
@@ -2546,7 +2546,7 @@ static int ocrdma_create_mq_eq(struct ocrdma_dev *dev)
 
 static int ocrdma_create_qp_eqs(struct ocrdma_dev *dev)
 {
-       int num_eq, i, status;
+       int num_eq, i, status = 0;
        int irq;
        unsigned long flags = 0;
 
index 51fc9c7..e955f1f 100644 (file)
@@ -334,7 +334,7 @@ static int ocrdma_copy_pd_uresp(struct ocrdma_pd *pd,
 {
        int status;
        u64 db_page_addr;
-       u64 dpp_page_addr;
+       u64 dpp_page_addr = 0;
        u32 db_page_size;
        struct ocrdma_alloc_pd_uresp rsp;
        struct ocrdma_ucontext *uctx = get_ocrdma_ucontext(ib_ctx);
@@ -368,7 +368,8 @@ static int ocrdma_copy_pd_uresp(struct ocrdma_pd *pd,
        return 0;
 
 ucopy_err:
-       ocrdma_del_mmap(pd->uctx, dpp_page_addr, OCRDMA_DPP_PAGE_SIZE);
+       if (pd->dpp_enabled)
+               ocrdma_del_mmap(pd->uctx, dpp_page_addr, OCRDMA_DPP_PAGE_SIZE);
 dpp_map_err:
        ocrdma_del_mmap(pd->uctx, db_page_addr, db_page_size);
        return status;