Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp486487yba; Mon, 1 Apr 2019 10:15:37 -0700 (PDT) X-Google-Smtp-Source: APXvYqxy0zicBLLl0rbFWmfhwtuCWU5FCedMU5S9ASRBPuEDAPbMFFEwbjXdNL6MNtVrz8CF/cIQ X-Received: by 2002:a62:4115:: with SMTP id o21mr62257925pfa.153.1554138937664; Mon, 01 Apr 2019 10:15:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554138937; cv=none; d=google.com; s=arc-20160816; b=YfPsHkWyi8t3VjvGvxqijfN455CZrausPp7dkiheYHmn9G55mIlHcF6UgqETyEDylk ZFfK9nUuuOk5d2XFiJ5XpdwPQjMZQq/se55U87xJGKH28Gur8IkqEJDFSgr1W19fq6vx g1moqKw4ey9Mu/cDQuAOX5X/KuwaXhebMp0e/qQJusg3NwMG1dClEp95oEIt8lmRRHRp JdjoPBZxbHpmu2f2dthMOtEOdOaNU3lv9huc/enkmWrkvshjrm2qAiGSppHxAGwDhtsP 0Q7sOBzhiiW3rpjpOeTPT7sGVD4hZGlvcogy+thHgdLNsVcTfuF5E/GMAm6augwfzMga DTNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=lrXwI8mLCk9fjZ1EI5xpKyaF8q4MXvtTNtNQtAo9+fo=; b=ccZpWFH76fJwMgg/3dKufZ5sydWC4NCBa1+jKcQEuUv7fsVz5eg1B1pWV9PXMxfAi3 +4DRAEvjNKuryOAsnmSGo/Jk1nYgmS1MNGOrcGuudK4xmHoWVG6ynzCN/tHHrtWVACKl IzXSxvZpPmWZbD9rqbpT2UwXi/DcwUIl+tI5/AIqs2IPh5cXkHhRgksJyuYTHxNDpwWN oYMGixnlJr7zO1Ydt80f/KI7+IW17H/7UCkcXElSck1eCEunTWIJ9QVCSuO3vh1xJ1ZX 9Ll/ixB4ttUryestoymM0pyXBohsMuYkqZ9zeDAeLxhS9WU+xUTfd+IhRkcSlxniUI6P KZVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LPTFkapB; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f1si9588578pld.32.2019.04.01.10.15.22; Mon, 01 Apr 2019 10:15:37 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LPTFkapB; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730541AbfDARNW (ORCPT + 99 others); Mon, 1 Apr 2019 13:13:22 -0400 Received: from mail.kernel.org ([198.145.29.99]:35662 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730214AbfDARNR (ORCPT ); Mon, 1 Apr 2019 13:13:17 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5EF4E21924; Mon, 1 Apr 2019 17:13:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554138796; bh=+GtiF7JWjFsUBlrlxUIfnz9dmYyrrB3OGRmlEkiIl0o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LPTFkapBc9/VTkGsxhg1Czr9dGh0pRdKUmBjl2ccp+HSuz15dycIzBuAgYSZbRRSB e621ZFwgEUXSVl2STNpw81l1k0hy1TwH/jUsn3uPpopyhEYEuS1kmWG4Lx9078cl1F eEFo30P2ITwwKGPzDLIzbE/PAcT9D8ymwH3AHcHA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, syzbot+a25307ad099309f1c2b9@syzkaller.appspotmail.com, Xin Long , Ying Xue , Jon Maloy , "David S. Miller" Subject: [PATCH 4.19 023/134] tipc: change to check tipc_own_id to return in tipc_net_stop Date: Mon, 1 Apr 2019 19:00:59 +0200 Message-Id: <20190401170046.737161533@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190401170044.243719205@linuxfoundation.org> References: <20190401170044.243719205@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: Xin Long [ Upstream commit 9926cb5f8b0f0aea535735185600d74db7608550 ] When running a syz script, a panic occurred: [ 156.088228] BUG: KASAN: use-after-free in tipc_disc_timeout+0x9c9/0xb20 [tipc] [ 156.094315] Call Trace: [ 156.094844] [ 156.095306] dump_stack+0x7c/0xc0 [ 156.097346] print_address_description+0x65/0x22e [ 156.100445] kasan_report.cold.3+0x37/0x7a [ 156.102402] tipc_disc_timeout+0x9c9/0xb20 [tipc] [ 156.106517] call_timer_fn+0x19a/0x610 [ 156.112749] run_timer_softirq+0xb51/0x1090 It was caused by the netns freed without deleting the discoverer timer, while later on the netns would be accessed in the timer handler. The timer should have been deleted by tipc_net_stop() when cleaning up a netns. However, tipc has been able to enable a bearer and start d->timer without the local node_addr set since Commit 52dfae5c85a4 ("tipc: obtain node identity from interface by default"), which caused the timer not to be deleted in tipc_net_stop() then. So fix it in tipc_net_stop() by changing to check local node_id instead of local node_addr, as Jon suggested. While at it, remove the calling of tipc_nametbl_withdraw() there, since tipc_nametbl_stop() will take of the nametbl's freeing after. Fixes: 52dfae5c85a4 ("tipc: obtain node identity from interface by default") Reported-by: syzbot+a25307ad099309f1c2b9@syzkaller.appspotmail.com Signed-off-by: Xin Long Acked-by: Ying Xue Acked-by: Jon Maloy Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- net/tipc/net.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) --- a/net/tipc/net.c +++ b/net/tipc/net.c @@ -163,12 +163,9 @@ void tipc_sched_net_finalize(struct net void tipc_net_stop(struct net *net) { - u32 self = tipc_own_addr(net); - - if (!self) + if (!tipc_own_id(net)) return; - tipc_nametbl_withdraw(net, TIPC_CFG_SRV, self, self, self); rtnl_lock(); tipc_bearer_stop(net); tipc_node_stop(net);