This will prevent double free in some cases where be_clear() is called
for cleanup when be_setup() fails half-way.
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
 static void be_queue_free(struct be_adapter *adapter, struct be_queue_info *q)
 {
        struct be_dma_mem *mem = &q->dma_mem;
-       if (mem->va)
+       if (mem->va) {
                dma_free_coherent(&adapter->pdev->dev, mem->size, mem->va,
                                  mem->dma);
+               mem->va = NULL;
+       }
 }
 
 static int be_queue_alloc(struct be_adapter *adapter, struct be_queue_info *q,
                if (rc)
                        return rc;
        }
-       return rc;
+       return 0;
 }
 
 static void be_mcc_queues_destroy(struct be_adapter *adapter)