};
 
 static struct rhashtable offdevs;
-static bool offdevs_inited;
 
 static int bpf_dev_offload_check(struct net_device *netdev)
 {
 {
        lockdep_assert_held(&bpf_devs_lock);
 
-       if (!offdevs_inited)
-               return NULL;
        return rhashtable_lookup_fast(&offdevs, &netdev, offdevs_params);
 }
 
 bpf_offload_dev_create(const struct bpf_prog_offload_ops *ops, void *priv)
 {
        struct bpf_offload_dev *offdev;
-       int err;
-
-       down_write(&bpf_devs_lock);
-       if (!offdevs_inited) {
-               err = rhashtable_init(&offdevs, &offdevs_params);
-               if (err) {
-                       up_write(&bpf_devs_lock);
-                       return ERR_PTR(err);
-               }
-               offdevs_inited = true;
-       }
-       up_write(&bpf_devs_lock);
 
        offdev = kzalloc(sizeof(*offdev), GFP_KERNEL);
        if (!offdev)
        return offdev->priv;
 }
 EXPORT_SYMBOL_GPL(bpf_offload_dev_priv);
+
+static int __init bpf_offload_init(void)
+{
+       return rhashtable_init(&offdevs, &offdevs_params);
+}
+
+late_initcall(bpf_offload_init);