[Devel] [RFC 04/54] connector: fix CONFIG_VE=n build
Eva Kurchatova
eva.kurchatova at virtuozzo.com
Wed Apr 29 22:58:04 MSK 2026
Signed-off-by: Eva Kurchatova <eva.kurchatova at virtuozzo.com>
---
drivers/connector/connector.c | 52 +++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/drivers/connector/connector.c b/drivers/connector/connector.c
index 47f7fb284540..479477de87b7 100644
--- a/drivers/connector/connector.c
+++ b/drivers/connector/connector.c
@@ -27,10 +27,16 @@ MODULE_AUTHOR("Evgeniy Polyakov <zbr at ioremap.net>");
MODULE_DESCRIPTION("Generic userspace <-> kernelspace connector.");
MODULE_ALIAS_NET_PF_PROTO(PF_NETLINK, NETLINK_CONNECTOR);
+#ifdef CONFIG_VE
static struct cn_dev *get_cdev(struct ve_struct *ve)
{
return &ve->cn->cdev;
}
+#else
+static struct cn_dev cdev;
+static int cn_already_initialized;
+#define get_cdev(ve) (&cdev)
+#endif
/*
* Sends mult (multiple) cn_msg at a time.
@@ -294,6 +300,8 @@ static int __maybe_unused cn_proc_show(struct seq_file *m, void *v)
return 0;
}
+#ifdef CONFIG_VE
+
static int cn_init_ve(void *data)
{
struct ve_struct *ve = data;
@@ -408,5 +416,49 @@ static void cn_fini(void)
return cn_fini_ve(get_ve0());
}
+#else
+
+static int cn_init(void)
+{
+ struct cn_dev *dev = &cdev;
+ struct netlink_kernel_cfg cfg = {
+ .groups = CN_NETLINK_USERS + 0xf,
+ .input = cn_rx_skb,
+ .flags = NL_CFG_F_NONROOT_RECV,
+ .bind = cn_bind,
+ .release = cn_release,
+ };
+
+ dev->nls = netlink_kernel_create(&init_net, NETLINK_CONNECTOR, &cfg);
+ if (!dev->nls)
+ return -EIO;
+
+ dev->cbdev = cn_queue_alloc_dev("cqueue", dev->nls);
+ if (!dev->cbdev) {
+ netlink_kernel_release(dev->nls);
+ return -EINVAL;
+ }
+
+ cn_already_initialized = 1;
+
+ proc_create_single("connector", S_IRUGO, init_net.proc_net, cn_proc_show);
+
+ return 0;
+}
+
+static void cn_fini(void)
+{
+ struct cn_dev *dev = &cdev;
+
+ cn_already_initialized = 0;
+
+ remove_proc_entry("connector", init_net.proc_net);
+
+ cn_queue_free_dev(dev->cbdev);
+ netlink_kernel_release(dev->nls);
+}
+
+#endif
+
subsys_initcall(cn_init);
module_exit(cn_fini);
--
2.54.0
More information about the Devel
mailing list