[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