return err;
 }
 
+static void nft_netdev_hook_free(struct nft_hook *hook)
+{
+       kfree(hook);
+}
+
+static void nft_netdev_hook_free_rcu(struct nft_hook *hook)
+{
+       kfree_rcu(hook, rcu);
+}
+
 static void nft_netdev_unregister_hooks(struct net *net,
                                        struct list_head *hook_list,
                                        bool release_netdev)
                nf_unregister_net_hook(net, &hook->ops);
                if (release_netdev) {
                        list_del(&hook->list);
-                       kfree_rcu(hook, rcu);
+                       nft_netdev_hook_free_rcu(hook);
                }
        }
 }
                        list_for_each_entry_safe(hook, next,
                                                 &basechain->hook_list, list) {
                                list_del_rcu(&hook->list);
-                               kfree_rcu(hook, rcu);
+                               nft_netdev_hook_free_rcu(hook);
                        }
                }
                module_put(basechain->type->owner);
                }
                if (nft_hook_list_find(hook_list, hook)) {
                        NL_SET_BAD_ATTR(extack, tmp);
-                       kfree(hook);
+                       nft_netdev_hook_free(hook);
                        err = -EEXIST;
                        goto err_hook;
                }
 err_hook:
        list_for_each_entry_safe(hook, next, hook_list, list) {
                list_del(&hook->list);
-               kfree(hook);
+               nft_netdev_hook_free(hook);
        }
        return err;
 }
 
        list_for_each_entry_safe(h, next, &hook->list, list) {
                list_del(&h->list);
-               kfree(h);
+               nft_netdev_hook_free(h);
        }
        module_put(hook->type->owner);
 }
 
                                if (nft_hook_list_find(&basechain->hook_list, h)) {
                                        list_del(&h->list);
-                                       kfree(h);
+                                       nft_netdev_hook_free(h);
                                }
                        }
                } else {
                        if (unregister)
                                nf_unregister_net_hook(ctx->net, &h->ops);
                        list_del(&h->list);
-                       kfree_rcu(h, rcu);
+                       nft_netdev_hook_free_rcu(h);
                }
                module_put(hook.type->owner);
        }
                                            FLOW_BLOCK_UNBIND);
                if (release_netdev) {
                        list_del(&hook->list);
-                       kfree_rcu(hook, rcu);
+                       nft_netdev_hook_free_rcu(hook);
                }
        }
 }
 
                nft_unregister_flowtable_hook(net, flowtable, hook);
                list_del_rcu(&hook->list);
-               kfree_rcu(hook, rcu);
+               nft_netdev_hook_free_rcu(hook);
        }
 
        return err;
 
        list_for_each_entry_safe(hook, next, hook_list, list) {
                list_del_rcu(&hook->list);
-               kfree_rcu(hook, rcu);
+               nft_netdev_hook_free_rcu(hook);
        }
 }
 
        list_for_each_entry_safe(hook, next, &flowtable_hook.list, list) {
                if (nft_hook_list_find(&flowtable->hook_list, hook)) {
                        list_del(&hook->list);
-                       kfree(hook);
+                       nft_netdev_hook_free(hook);
                }
        }
 
                if (unregister)
                        nft_unregister_flowtable_hook(ctx->net, flowtable, hook);
                list_del_rcu(&hook->list);
-               kfree_rcu(hook, rcu);
+               nft_netdev_hook_free_rcu(hook);
        }
 
        return err;
 
        list_for_each_entry_safe(this, next, &flowtable_hook->list, list) {
                list_del(&this->list);
-               kfree(this);
+               nft_netdev_hook_free(this);
        }
 }
 
        flowtable->data.type->free(&flowtable->data);
        list_for_each_entry_safe(hook, next, &flowtable->hook_list, list) {
                list_del_rcu(&hook->list);
-               kfree_rcu(hook, rcu);
+               nft_netdev_hook_free_rcu(hook);
        }
        kfree(flowtable->name);
        module_put(flowtable->data.type->owner);