OSDN Git Service

IB/rxe: replace kvfree with vfree
authorZhu Yanjun <yanjun.zhu@oracle.com>
Sun, 30 Sep 2018 05:57:42 +0000 (01:57 -0400)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 1 Oct 2018 01:20:38 +0000 (19:20 -0600)
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>
drivers/infiniband/sw/rxe/rxe_cq.c
drivers/infiniband/sw/rxe/rxe_qp.c

index 2ee4b08..a57276f 100644 (file)
@@ -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"
@@ -97,7 +97,7 @@ int rxe_cq_from_init(struct rxe_dev *rxe, struct rxe_cq *cq, int cqe,
        err = do_mmap_info(rxe, uresp ? &uresp->mi : NULL, 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;
        }
index 6ff88c8..45b392b 100644 (file)
@@ -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"
@@ -257,7 +258,7 @@ static int rxe_qp_init_req(struct rxe_dev *rxe, struct rxe_qp *qp,
                           &qp->sq.queue->ip);
 
        if (err) {
-               kvfree(qp->sq.queue->buf);
+               vfree(qp->sq.queue->buf);
                kfree(qp->sq.queue);
                return err;
        }
@@ -310,7 +311,7 @@ static int rxe_qp_init_resp(struct rxe_dev *rxe, struct rxe_qp *qp,
                                   qp->rq.queue->buf, 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;
                }