diff options
Diffstat (limited to 'drivers/infiniband/hw/amso1100')
| -rw-r--r-- | drivers/infiniband/hw/amso1100/c2.c | 4 | ||||
| -rw-r--r-- | drivers/infiniband/hw/amso1100/c2_ae.c | 2 | ||||
| -rw-r--r-- | drivers/infiniband/hw/amso1100/c2_intr.c | 3 | ||||
| -rw-r--r-- | drivers/infiniband/hw/amso1100/c2_provider.c | 23 | ||||
| -rw-r--r-- | drivers/infiniband/hw/amso1100/c2_rnic.c | 3 | 
5 files changed, 17 insertions, 18 deletions
diff --git a/drivers/infiniband/hw/amso1100/c2.c b/drivers/infiniband/hw/amso1100/c2.c index d53cf519f42..00400c352c1 100644 --- a/drivers/infiniband/hw/amso1100/c2.c +++ b/drivers/infiniband/hw/amso1100/c2.c @@ -1082,6 +1082,7 @@ static int c2_probe(struct pci_dev *pcidev, const struct pci_device_id *ent)  	/* Initialize network device */  	if ((netdev = c2_devinit(c2dev, mmio_regs)) == NULL) { +		ret = -ENOMEM;  		iounmap(mmio_regs);  		goto bail4;  	} @@ -1151,7 +1152,8 @@ static int c2_probe(struct pci_dev *pcidev, const struct pci_device_id *ent)  		goto bail10;  	} -	if (c2_register_device(c2dev)) +	ret = c2_register_device(c2dev); +	if (ret)  		goto bail10;  	return 0; diff --git a/drivers/infiniband/hw/amso1100/c2_ae.c b/drivers/infiniband/hw/amso1100/c2_ae.c index d5d1929753e..cedda25232b 100644 --- a/drivers/infiniband/hw/amso1100/c2_ae.c +++ b/drivers/infiniband/hw/amso1100/c2_ae.c @@ -141,7 +141,7 @@ static const char *to_qp_state_str(int state)  		return "C2_QP_STATE_ERROR";  	default:  		return "<invalid QP state>"; -	}; +	}  }  void c2_ae_event(struct c2_dev *c2dev, u32 mq_index) diff --git a/drivers/infiniband/hw/amso1100/c2_intr.c b/drivers/infiniband/hw/amso1100/c2_intr.c index 8951db4ae29..3a17d9b36db 100644 --- a/drivers/infiniband/hw/amso1100/c2_intr.c +++ b/drivers/infiniband/hw/amso1100/c2_intr.c @@ -169,7 +169,8 @@ static void handle_vq(struct c2_dev *c2dev, u32 mq_index)  		 * We should never get here, as the adapter should  		 * never send us a reply that we're not expecting.  		 */ -		vq_repbuf_free(c2dev, host_msg); +		if (reply_msg != NULL) +			vq_repbuf_free(c2dev, host_msg);  		pr_debug("handle_vq: UNEXPECTEDLY got NULL req\n");  		return;  	} diff --git a/drivers/infiniband/hw/amso1100/c2_provider.c b/drivers/infiniband/hw/amso1100/c2_provider.c index 07eb3a8067d..8af33cf1fc4 100644 --- a/drivers/infiniband/hw/amso1100/c2_provider.c +++ b/drivers/infiniband/hw/amso1100/c2_provider.c @@ -431,9 +431,9 @@ static struct ib_mr *c2_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,  	u64 *pages;  	u64 kva = 0;  	int shift, n, len; -	int i, j, k; +	int i, k, entry;  	int err = 0; -	struct ib_umem_chunk *chunk; +	struct scatterlist *sg;  	struct c2_pd *c2pd = to_c2pd(pd);  	struct c2_mr *c2mr; @@ -452,10 +452,7 @@ static struct ib_mr *c2_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,  	}  	shift = ffs(c2mr->umem->page_size) - 1; - -	n = 0; -	list_for_each_entry(chunk, &c2mr->umem->chunk_list, list) -		n += chunk->nents; +	n = c2mr->umem->nmap;  	pages = kmalloc(n * sizeof(u64), GFP_KERNEL);  	if (!pages) { @@ -464,14 +461,12 @@ static struct ib_mr *c2_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,  	}  	i = 0; -	list_for_each_entry(chunk, &c2mr->umem->chunk_list, list) { -		for (j = 0; j < chunk->nmap; ++j) { -			len = sg_dma_len(&chunk->page_list[j]) >> shift; -			for (k = 0; k < len; ++k) { -				pages[i++] = -					sg_dma_address(&chunk->page_list[j]) + -					(c2mr->umem->page_size * k); -			} +	for_each_sg(c2mr->umem->sg_head.sgl, sg, c2mr->umem->nmap, entry) { +		len = sg_dma_len(sg) >> shift; +		for (k = 0; k < len; ++k) { +			pages[i++] = +				sg_dma_address(sg) + +				(c2mr->umem->page_size * k);  		}  	} diff --git a/drivers/infiniband/hw/amso1100/c2_rnic.c b/drivers/infiniband/hw/amso1100/c2_rnic.c index b7c98699005..d2a6d961344 100644 --- a/drivers/infiniband/hw/amso1100/c2_rnic.c +++ b/drivers/infiniband/hw/amso1100/c2_rnic.c @@ -576,7 +576,8 @@ int c2_rnic_init(struct c2_dev *c2dev)  		goto bail4;  	/* Initialize cached the adapter limits */ -	if (c2_rnic_query(c2dev, &c2dev->props)) +	err = c2_rnic_query(c2dev, &c2dev->props); +	if (err)  		goto bail5;  	/* Initialize the PD pool */  | 
