ehca: use kvcalloc and kvfree
PATCH 9/9 ehca: use kvcalloc and kvfree
use kvcalloc and kvfree
use kvcalloc and kvfree, but I haven't test it, as I don't have that machine.
Signed-off-by Changli Gao <[email protected]>
----
drivers/infiniband/hw/ehca/ipz_pt_fn.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-)
drivers/infiniband/hw/ehca/ipz_pt_fn.c +5 -17
@@ -38,8 +38,6 @@* POSSIBILITY OF SUCH DAMAGE. */ -#include <linux/slab.h> -#include "ehca_tools.h" #include "ipz_pt_fn.h" #include "ehca_classes.h"
@@ -222,15 +220,11 @@ int ipz_queue_ctor(struct ehca_pd *pd, struct ipz_queue *queue, queue->small_page =NULL ;/* allocate queue page pointers */ - queue->queue_pages =kmalloc (nr_of_pages *sizeof (void *),GFP_KERNEL ); + queue->queue_pages =kvcalloc (nr_of_pages,sizeof (void *));if (!queue->queue_pages) { - queue->queue_pages =vmalloc (nr_of_pages *sizeof (void *)); -if (!queue->queue_pages) { -ehca_gen_err ("Couldn't allocate queue page list" ); -return 0 ; - } +ehca_gen_err ("Couldn't allocate queue page list" ); +return 0 ; } -memset (queue->queue_pages,0 , nr_of_pages *sizeof (void *));/* allocate actual queue pages */ if (is_small) {
@@ -245,10 +239,7 @@ int ipz_queue_ctor(struct ehca_pd *pd, struct ipz_queue *queue, ipz_queue_ctor_exit0:ehca_gen_err ("Couldn't alloc pages queue=%p " "nr_of_pages=%x" , queue, nr_of_pages); -if (is_vmalloc_addr (queue->queue_pages)) -vfree (queue->queue_pages); -else -kfree (queue->queue_pages); +kvfree (queue->queue_pages);return 0 ; }
@@ -270,10 +261,7 @@ int ipz_queue_dtor(struct ehca_pd *pd, struct ipz_queue *queue)free_page ((unsigned long )queue->queue_pages[i]); } -if (is_vmalloc_addr (queue->queue_pages)) -vfree (queue->queue_pages); -else -kfree (queue->queue_pages); +kvfree (queue->queue_pages);return 1 ; }
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html