diff options
| -rw-r--r-- | drivers/infiniband/hw/amso1100/c2_cq.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/amso1100/c2_cq.c b/drivers/infiniband/hw/amso1100/c2_cq.c index 49e0e8533f74..1b63185b4ad4 100644 --- a/drivers/infiniband/hw/amso1100/c2_cq.c +++ b/drivers/infiniband/hw/amso1100/c2_cq.c | |||
| @@ -260,11 +260,14 @@ static void c2_free_cq_buf(struct c2_dev *c2dev, struct c2_mq *mq) | |||
| 260 | mq->msg_pool.host, dma_unmap_addr(mq, mapping)); | 260 | mq->msg_pool.host, dma_unmap_addr(mq, mapping)); |
| 261 | } | 261 | } |
| 262 | 262 | ||
| 263 | static int c2_alloc_cq_buf(struct c2_dev *c2dev, struct c2_mq *mq, int q_size, | 263 | static int c2_alloc_cq_buf(struct c2_dev *c2dev, struct c2_mq *mq, |
| 264 | int msg_size) | 264 | size_t q_size, size_t msg_size) |
| 265 | { | 265 | { |
| 266 | u8 *pool_start; | 266 | u8 *pool_start; |
| 267 | 267 | ||
| 268 | if (q_size > SIZE_MAX / msg_size) | ||
| 269 | return -EINVAL; | ||
| 270 | |||
| 268 | pool_start = dma_alloc_coherent(&c2dev->pcidev->dev, q_size * msg_size, | 271 | pool_start = dma_alloc_coherent(&c2dev->pcidev->dev, q_size * msg_size, |
| 269 | &mq->host_dma, GFP_KERNEL); | 272 | &mq->host_dma, GFP_KERNEL); |
| 270 | if (!pool_start) | 273 | if (!pool_start) |
