cnic: use kvzalloc to allocate memory for csk_tbl
authorJan Dakinevich <jan.dakinevich@virtuozzo.com>
Mon, 9 Jul 2018 13:51:19 +0000 (16:51 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 12 Jul 2018 05:55:52 +0000 (22:55 -0700)
Size of csk_tbl is about 58K, which means 3rd order page allocation.
kvzalloc provides a fallback if no high order memory is available.

Signed-off-by: Jan Dakinevich <jan.dakinevich@virtuozzo.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/cnic.c

index 2369b2f0d95a5ebb0e5ef70ef4228d05e6ce4437..d83233ae4a15f318ea89acb5da927e71501c2a5e 100644 (file)
@@ -4088,7 +4088,7 @@ static void cnic_cm_free_mem(struct cnic_dev *dev)
 {
        struct cnic_local *cp = dev->cnic_priv;
 
-       kfree(cp->csk_tbl);
+       kvfree(cp->csk_tbl);
        cp->csk_tbl = NULL;
        cnic_free_id_tbl(&cp->csk_port_tbl);
 }
@@ -4098,8 +4098,8 @@ static int cnic_cm_alloc_mem(struct cnic_dev *dev)
        struct cnic_local *cp = dev->cnic_priv;
        u32 port_id;
 
-       cp->csk_tbl = kcalloc(MAX_CM_SK_TBL_SZ, sizeof(struct cnic_sock),
-                             GFP_KERNEL);
+       cp->csk_tbl = kvcalloc(MAX_CM_SK_TBL_SZ, sizeof(struct cnic_sock),
+                              GFP_KERNEL);
        if (!cp->csk_tbl)
                return -ENOMEM;