* @new_func:  pointer to the patched function code
  * @old_sympos: a hint indicating which symbol position the old function
  *             can be found (optional)
- * @old_addr:  the address of the function being patched
+ * @old_func:  pointer to the function being patched
  * @kobj:      kobject for sysfs resources
  * @stack_node:        list node for klp_ops func_stack list
  * @old_size:  size of the old function
        unsigned long old_sympos;
 
        /* internal */
-       unsigned long old_addr;
+       void *old_func;
        struct kobject kobj;
        struct list_head stack_node;
        unsigned long old_size, new_size;
 
        obj->mod = NULL;
 
        klp_for_each_func(obj, func)
-               func->old_addr = 0;
+               func->old_func = NULL;
 }
 
 /*
        klp_for_each_func(obj, func) {
                ret = klp_find_object_symbol(obj->name, func->old_name,
                                             func->old_sympos,
-                                            &func->old_addr);
+                                            (unsigned long *)&func->old_func);
                if (ret)
                        return ret;
 
-               ret = kallsyms_lookup_size_offset(func->old_addr,
+               ret = kallsyms_lookup_size_offset((unsigned long)func->old_func,
                                                  &func->old_size, NULL);
                if (!ret) {
                        pr_err("kallsyms size lookup failed for '%s'\n",
 
 
 static LIST_HEAD(klp_ops);
 
-struct klp_ops *klp_find_ops(unsigned long old_addr)
+struct klp_ops *klp_find_ops(void *old_func)
 {
        struct klp_ops *ops;
        struct klp_func *func;
        list_for_each_entry(ops, &klp_ops, node) {
                func = list_first_entry(&ops->func_stack, struct klp_func,
                                        stack_node);
-               if (func->old_addr == old_addr)
+               if (func->old_func == old_func)
                        return ops;
        }
 
 
        if (WARN_ON(!func->patched))
                return;
-       if (WARN_ON(!func->old_addr))
+       if (WARN_ON(!func->old_func))
                return;
 
-       ops = klp_find_ops(func->old_addr);
+       ops = klp_find_ops(func->old_func);
        if (WARN_ON(!ops))
                return;
 
        if (list_is_singular(&ops->func_stack)) {
                unsigned long ftrace_loc;
 
-               ftrace_loc = klp_get_ftrace_location(func->old_addr);
+               ftrace_loc =
+                       klp_get_ftrace_location((unsigned long)func->old_func);
                if (WARN_ON(!ftrace_loc))
                        return;
 
        struct klp_ops *ops;
        int ret;
 
-       if (WARN_ON(!func->old_addr))
+       if (WARN_ON(!func->old_func))
                return -EINVAL;
 
        if (WARN_ON(func->patched))
                return -EINVAL;
 
-       ops = klp_find_ops(func->old_addr);
+       ops = klp_find_ops(func->old_func);
        if (!ops) {
                unsigned long ftrace_loc;
 
-               ftrace_loc = klp_get_ftrace_location(func->old_addr);
+               ftrace_loc =
+                       klp_get_ftrace_location((unsigned long)func->old_func);
                if (!ftrace_loc) {
                        pr_err("failed to find location for function '%s'\n",
                                func->old_name);
 
  * struct klp_ops - structure for tracking registered ftrace ops structs
  *
  * A single ftrace_ops is shared between all enabled replacement functions
- * (klp_func structs) which have the same old_addr.  This allows the switch
+ * (klp_func structs) which have the same old_func.  This allows the switch
  * between function versions to happen instantaneously by updating the klp_ops
  * struct's func_stack list.  The winner is the klp_func at the top of the
  * func_stack (front of the list).
        struct ftrace_ops fops;
 };
 
-struct klp_ops *klp_find_ops(unsigned long old_addr);
+struct klp_ops *klp_find_ops(void *old_func);
 
 int klp_patch_object(struct klp_object *obj);
 void klp_unpatch_object(struct klp_object *obj);
 
                         * Check for the to-be-patched function
                         * (the previous func).
                         */
-                       ops = klp_find_ops(func->old_addr);
+                       ops = klp_find_ops(func->old_func);
 
                        if (list_is_singular(&ops->func_stack)) {
                                /* original function */
-                               func_addr = func->old_addr;
+                               func_addr = (unsigned long)func->old_func;
                                func_size = func->old_size;
                        } else {
                                /* previously patched function */