]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - net/tipc/subscr.c
tipc: Eliminate use of user registry by topology service
[mirror_ubuntu-bionic-kernel.git] / net / tipc / subscr.c
index 33313961d01008548175a6d25e4b54592fed21a2..21abf1765b02e4546775ba0909a94df1c9976cdc 100644 (file)
  */
 
 #include "core.h"
-#include "dbg.h"
 #include "name_table.h"
 #include "port.h"
-#include "ref.h"
 #include "subscr.h"
 
 /**
@@ -66,7 +64,6 @@ struct subscriber {
  */
 
 struct top_srv {
-       u32 user_ref;
        u32 setup_port;
        atomic_t subscription_count;
        struct list_head subscriber_list;
@@ -496,7 +493,7 @@ static void subscr_named_msg_event(void *usr_handle,
 
        /* Create server port & establish connection to subscriber */
 
-       tipc_createport(topsrv.user_ref,
+       tipc_createport(0,
                        subscriber,
                        importance,
                        NULL,
@@ -544,20 +541,14 @@ static void subscr_named_msg_event(void *usr_handle,
 int tipc_subscr_start(void)
 {
        struct tipc_name_seq seq = {TIPC_TOP_SRV, TIPC_TOP_SRV, TIPC_TOP_SRV};
-       int res = -1;
+       int res;
 
        memset(&topsrv, 0, sizeof (topsrv));
        spin_lock_init(&topsrv.lock);
        INIT_LIST_HEAD(&topsrv.subscriber_list);
 
        spin_lock_bh(&topsrv.lock);
-       res = tipc_attach(&topsrv.user_ref, NULL, NULL);
-       if (res) {
-               spin_unlock_bh(&topsrv.lock);
-               return res;
-       }
-
-       res = tipc_createport(topsrv.user_ref,
+       res = tipc_createport(0,
                              NULL,
                              TIPC_CRITICAL_IMPORTANCE,
                              NULL,
@@ -572,16 +563,17 @@ int tipc_subscr_start(void)
                goto failed;
 
        res = tipc_nametbl_publish_rsv(topsrv.setup_port, TIPC_NODE_SCOPE, &seq);
-       if (res)
+       if (res) {
+               tipc_deleteport(topsrv.setup_port);
+               topsrv.setup_port = 0;
                goto failed;
+       }
 
        spin_unlock_bh(&topsrv.lock);
        return 0;
 
 failed:
        err("Failed to create subscription service\n");
-       tipc_detach(topsrv.user_ref);
-       topsrv.user_ref = 0;
        spin_unlock_bh(&topsrv.lock);
        return res;
 }
@@ -592,8 +584,10 @@ void tipc_subscr_stop(void)
        struct subscriber *subscriber_temp;
        spinlock_t *subscriber_lock;
 
-       if (topsrv.user_ref) {
+       if (topsrv.setup_port) {
                tipc_deleteport(topsrv.setup_port);
+               topsrv.setup_port = 0;
+
                list_for_each_entry_safe(subscriber, subscriber_temp,
                                         &topsrv.subscriber_list,
                                         subscriber_list) {
@@ -602,7 +596,5 @@ void tipc_subscr_stop(void)
                        subscr_terminate(subscriber);
                        spin_unlock_bh(subscriber_lock);
                }
-               tipc_detach(topsrv.user_ref);
-               topsrv.user_ref = 0;
        }
 }