summaryrefslogtreecommitdiff
path: root/bus.c
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2013-12-11 04:00:55 +0100
committerKay Sievers <kay@vrfy.org>2013-12-11 04:01:59 +0100
commit56c3c606389874e0c799c3455b87fc64564316a6 (patch)
tree47be2357e1003228c38cd54ffdc18bdcce69d191 /bus.c
parent5563bf41279e6867474a4e71efcec24e0f4a9e59 (diff)
downloadkdbus-bus-56c3c606389874e0c799c3455b87fc64564316a6.tar.gz
kdbus-bus-56c3c606389874e0c799c3455b87fc64564316a6.tar.bz2
kdbus-bus-56c3c606389874e0c799c3455b87fc64564316a6.zip
set bus->ns only after we linked the bus
Diffstat (limited to 'bus.c')
-rw-r--r--bus.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/bus.c b/bus.c
index da09c7ec121..746315f0be2 100644
--- a/bus.c
+++ b/bus.c
@@ -128,7 +128,8 @@ void kdbus_bus_disconnect(struct kdbus_bus *bus)
/* disconnect from namespace */
mutex_lock(&bus->ns->lock);
- list_del(&bus->ns_entry);
+ if (bus->ns)
+ list_del(&bus->ns_entry);
mutex_unlock(&bus->ns->lock);
/* remove all endpoints attached to this bus */
@@ -204,7 +205,6 @@ int kdbus_bus_new(struct kdbus_ns *ns,
hash_init(b->conn_hash);
INIT_LIST_HEAD(&b->ep_list);
INIT_LIST_HEAD(&b->monitors_list);
- b->ns = kdbus_ns_ref(ns);
/* generate unique ID for this bus */
get_random_bytes(b->id128, sizeof(b->id128));
@@ -227,7 +227,7 @@ int kdbus_bus_new(struct kdbus_ns *ns,
if (ret < 0)
goto exit;
- ret = kdbus_ep_new(b, "bus", mode, uid, gid,
+ ret = kdbus_ep_new(b, ns, "bus", mode, uid, gid,
b->bus_flags & KDBUS_MAKE_POLICY_OPEN);
if (ret < 0)
goto exit;
@@ -236,6 +236,7 @@ int kdbus_bus_new(struct kdbus_ns *ns,
mutex_lock(&ns->lock);
b->id = ns->bus_id_next++;
list_add_tail(&b->ns_entry, &ns->bus_list);
+ b->ns = kdbus_ns_ref(ns);
mutex_unlock(&ns->lock);
*bus = b;