OSDN Git Service

tipc: fix a double free in tipc_enable_bearer()
authorCong Wang <xiyou.wangcong@gmail.com>
Mon, 24 Dec 2018 05:45:56 +0000 (21:45 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 Jan 2019 16:38:34 +0000 (17:38 +0100)
[ Upstream commit dc4501ff287547dea7ca10f1c580c741291a8760 ]

bearer_disable() already calls kfree_rcu() to free struct tipc_bearer,
we don't need to call kfree() again.

Fixes: cb30a63384bc ("tipc: refactor function tipc_enable_bearer()")
Reported-by: syzbot+b981acf1fb240c0c128b@syzkaller.appspotmail.com
Cc: Ying Xue <ying.xue@windriver.com>
Cc: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/tipc/bearer.c

index 645c160..2649a0a 100644 (file)
@@ -317,7 +317,6 @@ static int tipc_enable_bearer(struct net *net, const char *name,
        res = tipc_disc_create(net, b, &b->bcast_addr, &skb);
        if (res) {
                bearer_disable(net, b);
-               kfree(b);
                errstr = "failed to create discoverer";
                goto rejected;
        }