#include <linux/printk.h>
 #include <linux/ratelimit.h>
 #include <linux/slab.h>
-#include <linux/vmalloc.h>
+#include <linux/mm.h>
 #include "gcov.h"
 
 typedef void (*llvm_gcov_callback)(void);
 static struct gcov_fn_info *gcov_fn_info_dup(struct gcov_fn_info *fn)
 {
        size_t cv_size; /* counter values size */
-       struct gcov_fn_info *fn_dup = kmemdup(fn, sizeof(*fn),
-                       GFP_KERNEL);
+       struct gcov_fn_info *fn_dup = kmemdup(fn, sizeof(*fn), GFP_KERNEL);
+
        if (!fn_dup)
                return NULL;
        INIT_LIST_HEAD(&fn_dup->head);
                goto err_name;
 
        cv_size = fn->num_counters * sizeof(fn->counters[0]);
-       fn_dup->counters = vmalloc(cv_size);
+       fn_dup->counters = kvmalloc(cv_size, GFP_KERNEL);
        if (!fn_dup->counters)
                goto err_counters;
        memcpy(fn_dup->counters, fn->counters, cv_size);
        INIT_LIST_HEAD(&fn_dup->head);
 
        cv_size = fn->num_counters * sizeof(fn->counters[0]);
-       fn_dup->counters = vmalloc(cv_size);
+       fn_dup->counters = kvmalloc(cv_size, GFP_KERNEL);
        if (!fn_dup->counters) {
                kfree(fn_dup);
                return NULL;
        struct gcov_fn_info *fn, *tmp;
 
        list_for_each_entry_safe(fn, tmp, &info->functions, head) {
-               vfree(fn->counters);
+               kvfree(fn->counters);
                list_del(&fn->head);
                kfree(fn);
        }
 
 #include <linux/slab.h>
 #include <linux/mutex.h>
 #include <linux/seq_file.h>
-#include <linux/vmalloc.h>
+#include <linux/mm.h>
 #include "gcov.h"
 
 /**
        /* Dry-run to get the actual buffer size. */
        size = convert_to_gcda(NULL, info);
 
-       iter = vmalloc(struct_size(iter, buffer, size));
+       iter = kvmalloc(struct_size(iter, buffer, size), GFP_KERNEL);
        if (!iter)
                return NULL;
 
  */
 static void gcov_iter_free(struct gcov_iterator *iter)
 {
-       vfree(iter);
+       kvfree(iter);
 }
 
 /**
 
 #include <linux/errno.h>
 #include <linux/slab.h>
 #include <linux/string.h>
-#include <linux/vmalloc.h>
+#include <linux/mm.h>
 #include "gcov.h"
 
 #if (__GNUC__ >= 10)
 
                        cv_size = sizeof(gcov_type) * sci_ptr->num;
 
-                       dci_ptr->values = vmalloc(cv_size);
+                       dci_ptr->values = kvmalloc(cv_size, GFP_KERNEL);
 
                        if (!dci_ptr->values)
                                goto err_free;
                ci_ptr = info->functions[fi_idx]->ctrs;
 
                for (ct_idx = 0; ct_idx < active; ct_idx++, ci_ptr++)
-                       vfree(ci_ptr->values);
+                       kvfree(ci_ptr->values);
 
                kfree(info->functions[fi_idx]);
        }