diff options
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/subscr.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c index caec0b2b0740..d0dbde420540 100644 --- a/net/tipc/subscr.c +++ b/net/tipc/subscr.c @@ -154,6 +154,22 @@ static void tipc_subscrp_delete(struct tipc_subscription *sub) atomic_dec(&tn->subscription_count); } +static struct tipc_subscriber *tipc_subscrb_create(int conid) +{ + struct tipc_subscriber *subscriber; + + subscriber = kzalloc(sizeof(*subscriber), GFP_ATOMIC); + if (!subscriber) { + pr_warn("Subscriber rejected, no memory\n"); + return NULL; + } + INIT_LIST_HEAD(&subscriber->subscrp_list); + subscriber->conid = conid; + spin_lock_init(&subscriber->lock); + + return subscriber; +} + static void tipc_subscrb_delete(struct tipc_subscriber *subscriber) { struct tipc_subscription *sub; @@ -301,19 +317,7 @@ static void tipc_subscrb_rcv_cb(struct net *net, int conid, /* Handle one request to establish a new subscriber */ static void *tipc_subscrb_connect_cb(int conid) { - struct tipc_subscriber *subscriber; - - /* Create subscriber object */ - subscriber = kzalloc(sizeof(struct tipc_subscriber), GFP_ATOMIC); - if (subscriber == NULL) { - pr_warn("Subscriber rejected, no memory\n"); - return NULL; - } - INIT_LIST_HEAD(&subscriber->subscrp_list); - subscriber->conid = conid; - spin_lock_init(&subscriber->lock); - - return (void *)subscriber; + return (void *)tipc_subscrb_create(conid); } int tipc_topsrv_start(struct net *net) |