Commit b714295a authored by Jon Maloy's avatar Jon Maloy Committed by David S. Miller

tipc: Fix missing list initializations in struct tipc_subscription

When an item of struct tipc_subscription is created, we fail to
initialize the two lists aggregated into the struct. This has so far
never been a problem, since the items are just added to a root
object by list_add(), which does not require the addee list to be
pre-initialized. However, syzbot is provoking situations where this
addition fails, whereupon the attempted removal if the item from
the list causes a crash.

This problem seems to always have been around, despite that the code
for creating this object was rewritten in commit 242e82cc ("tipc:
collapse subscription creation functions"), which is still in net-next.

We fix this for that commit by initializing the two lists properly.

Fixes: 242e82cc ("tipc: collapse subscription creation functions")
Reported-by: syzbot+0bb443b74ce09197e970@syzkaller.appspotmail.com
Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f51ffde9
...@@ -145,6 +145,8 @@ struct tipc_subscription *tipc_sub_subscribe(struct net *net, ...@@ -145,6 +145,8 @@ struct tipc_subscription *tipc_sub_subscribe(struct net *net,
pr_warn("Subscription rejected, no memory\n"); pr_warn("Subscription rejected, no memory\n");
return NULL; return NULL;
} }
INIT_LIST_HEAD(&sub->service_list);
INIT_LIST_HEAD(&sub->sub_list);
sub->net = net; sub->net = net;
sub->conid = conid; sub->conid = conid;
sub->inactive = false; sub->inactive = false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment