| From d0924f63e3a539ea90b20d6fd7d5c1f6dd5b5070 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 30 Sep 2018 01:57:42 -0400 |
| Subject: IB/rxe: replace kvfree with vfree |
| |
| From: Zhu Yanjun <yanjun.zhu@oracle.com> |
| |
| [ Upstream commit 721ad7e643f7002efa398838693f90284ea216d1 ] |
| |
| The buf is allocated by vmalloc_user in the function rxe_queue_init. |
| So it is better to free it by vfree. |
| |
| Fixes: 8700e3e7c485 ("Soft RoCE driver") |
| Reviewed-by: Leon Romanovsky <leonro@mellanox.com> |
| Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com> |
| Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/infiniband/sw/rxe/rxe_cq.c | 4 ++-- |
| drivers/infiniband/sw/rxe/rxe_qp.c | 5 +++-- |
| 2 files changed, 5 insertions(+), 4 deletions(-) |
| |
| diff --git a/drivers/infiniband/sw/rxe/rxe_cq.c b/drivers/infiniband/sw/rxe/rxe_cq.c |
| index e5e6a5e7dee9c..5ac88412f1ffe 100644 |
| --- a/drivers/infiniband/sw/rxe/rxe_cq.c |
| +++ b/drivers/infiniband/sw/rxe/rxe_cq.c |
| @@ -30,7 +30,7 @@ |
| * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| * SOFTWARE. |
| */ |
| - |
| +#include <linux/vmalloc.h> |
| #include "rxe.h" |
| #include "rxe_loc.h" |
| #include "rxe_queue.h" |
| @@ -89,7 +89,7 @@ int rxe_cq_from_init(struct rxe_dev *rxe, struct rxe_cq *cq, int cqe, |
| err = do_mmap_info(rxe, udata, false, context, cq->queue->buf, |
| cq->queue->buf_size, &cq->queue->ip); |
| if (err) { |
| - kvfree(cq->queue->buf); |
| + vfree(cq->queue->buf); |
| kfree(cq->queue); |
| return err; |
| } |
| diff --git a/drivers/infiniband/sw/rxe/rxe_qp.c b/drivers/infiniband/sw/rxe/rxe_qp.c |
| index 44b2108253bd9..d6672127808b7 100644 |
| --- a/drivers/infiniband/sw/rxe/rxe_qp.c |
| +++ b/drivers/infiniband/sw/rxe/rxe_qp.c |
| @@ -34,6 +34,7 @@ |
| #include <linux/skbuff.h> |
| #include <linux/delay.h> |
| #include <linux/sched.h> |
| +#include <linux/vmalloc.h> |
| |
| #include "rxe.h" |
| #include "rxe_loc.h" |
| @@ -255,7 +256,7 @@ static int rxe_qp_init_req(struct rxe_dev *rxe, struct rxe_qp *qp, |
| qp->sq.queue->buf_size, &qp->sq.queue->ip); |
| |
| if (err) { |
| - kvfree(qp->sq.queue->buf); |
| + vfree(qp->sq.queue->buf); |
| kfree(qp->sq.queue); |
| return err; |
| } |
| @@ -312,7 +313,7 @@ static int rxe_qp_init_resp(struct rxe_dev *rxe, struct rxe_qp *qp, |
| qp->rq.queue->buf_size, |
| &qp->rq.queue->ip); |
| if (err) { |
| - kvfree(qp->rq.queue->buf); |
| + vfree(qp->rq.queue->buf); |
| kfree(qp->rq.queue); |
| return err; |
| } |
| -- |
| 2.20.1 |
| |