Skip to contentSkip to conversation

Patch "tipc: fix connection abort during subscription cancel" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message Feb 29, 2016

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

tipc: fix connection abort during subscription cancel

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
tipc-fix-connection-abort-during-subscription-cancel.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From foo@baz Mon Feb 29 14:33:50 PST 2016

From: Parthasarathy Bhuvaragan <[email protected]>
Date: Wed, 27 Jan 2016 11:35:59 +0100
Subject: tipc: fix connection abort during subscription cancel

From: Parthasarathy Bhuvaragan <[email protected]>

[ Upstream commit 4d5cfcba2f6ec494d8810b9e3c0a7b06255c8067 ]

In 'commit 7fe8097cef5f ("tipc: fix nullpointer bug when subscribing to events")', we terminate the connection if the subscription creation fails.
In the same commit, the subscription creation result was based on the value of the subscription pointer (set in the function) instead of the return code.

Unfortunately, the same function tipc_subscrp_create() handles subscription cancel request. For a subscription cancellation request, the subscription pointer cannot be set. Thus if a subscriber has several subscriptions and cancels any of them, the connection is terminated.

In this commit, we terminate the connection based on the return value of tipc_subscrp_create().

Fixes commit 7fe8097cef5f ("tipc: fix nullpointer bug when subscribing to events")
---
 net/tipc/subscr.c |   11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
net/tipc/subscr.c +5 -6
@@ -289,15 +289,14 @@ static void tipc_subscrb_rcv_cb(struct n
 				struct sockaddr_tipc *addr, void *usr_data,
 				void *buf, size_t len)
 {
-	struct tipc_subscriber *subscriber = usr_data;
+	struct tipc_subscriber *subscrb = usr_data;
 	struct tipc_subscription *sub = NULL;
 	struct tipc_net *tn = net_generic(net, tipc_net_id);
 
-	tipc_subscrp_create(net, (struct tipc_subscr *)buf, subscriber, &sub);
-	if (sub)
-		tipc_nametbl_subscribe(sub);
-	else
-		tipc_conn_terminate(tn->topsrv, subscriber->conid);
+	if (tipc_subscrp_create(net, (struct tipc_subscr *)buf, subscrb, &sub))
+		return tipc_conn_terminate(tn->topsrv, subscrb->conid);
+
+	tipc_nametbl_subscribe(sub);
 }
 
 /* Handle one request to establish a new subscriber */

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/tipc-fix-connection-abort-during-subscription-cancel.patch