Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1681358ybz; Thu, 16 Apr 2020 13:34:48 -0700 (PDT) X-Google-Smtp-Source: APiQypJ3l0k+xKR/E9wMKV17KLB2OsP67kScUAUGAQ5AmmGQSldKjcCKhSd2Z/pEGkMyKZV94neb X-Received: by 2002:a05:6402:1587:: with SMTP id c7mr22642edv.61.1587069288573; Thu, 16 Apr 2020 13:34:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587069288; cv=none; d=google.com; s=arc-20160816; b=gH278VNlKwrf1RFI6h2kkWhYEcoGrkOgutuqXEhWl7HEQcIDTNjmhtWQxjig7pY4vv 1FQeCeK9n2PaJKfrSg5sdnInu7tmR1tm43hh9AAxAdA1/UN0mPexj4ifrKsLYjH+MQUB Odv/82a0Nbx8XjXoNXK2Rt8ZrKeQbGETOx3NgzJPaqxSYBebx22/Cj7a04rHpociQpQ6 0wCfZf7SCyw2KCLOTPBq/KaW/v0D2CwvO7TwKFt4eMaAFrckfqEhzSemgK6x3DbjhtqT zx/m/uzsoPqPxKWFtUs3wD+b00Z/MCUAHPmzSUhxAegWh0LOZjnrZCmFMuVRPa3GlDJD /6MQ== 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=gksVER7+K6SrKfjTN2V7LFT/cJi8DqPzkOtPw8tHzWk=; b=v2vMcp3L91ye3cKFzxSNmYB4lJ1d/IdpxQw9Zog+ZJD4z9THPw5c9RbOzNvF6KMR3p jSh6j0DRkLJcrjp68Rlv+4Gt2y74PDaRHCbn3/L+IAv2rnyUSiRSKR2Wt6PBD7SiOzso mJOKpvxPO4SWDnBLur2KbBJ49eViz4Z5/M8vSOI8sqzAclI497HwIoWbcdQZ3w2jjqj8 XYepVHMsrxBA4OPCFnsp9XYzvVZNNchlkOOLCMNCq7ObnhX4xmvDRWPW3aGMFohHIZRK lZn1rD8CB/Gd8VE/1elrrUNNPuRBkLlFeauyscZkbBAhUIzUy/I7lNkr7juFY7zOqV0j beoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xTUMgahu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l9si12822592ejh.463.2020.04.16.13.34.25; Thu, 16 Apr 2020 13:34:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xTUMgahu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2442433AbgDPPTL (ORCPT + 99 others); Thu, 16 Apr 2020 11:19:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:34114 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390133AbgDPNsC (ORCPT ); Thu, 16 Apr 2020 09:48:02 -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 BC8C72222C; Thu, 16 Apr 2020 13:48:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587044882; bh=zIhIZGj24O1o982in8b2nseAv+Soag+2J7fvks+6GeU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xTUMgahuGmk2EneIrzIOwq4woo6zR/GXCsFfs8lM2+E6Tmx0mRb3QCE/hasMefqUo xlvnM+m53V0BxssjiHp0yLHas1L5EhtODf0aKdqhL/XQbKdWUw72f955UCKE/aUSKN PLFiwghXFxfXoQdYwiditmBwMUJXVw0JiWVWQ0zE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Qu Wenruo , Josef Bacik , David Sterba Subject: [PATCH 5.4 141/232] btrfs: drop block from cache on error in relocation Date: Thu, 16 Apr 2020 15:23:55 +0200 Message-Id: <20200416131332.620071433@linuxfoundation.org> X-Mailer: git-send-email 2.26.1 In-Reply-To: <20200416131316.640996080@linuxfoundation.org> References: <20200416131316.640996080@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Josef Bacik commit 8e19c9732ad1d127b5575a10f4fbcacf740500ff upstream. If we have an error while building the backref tree in relocation we'll process all the pending edges and then free the node. However if we integrated some edges into the cache we'll lose our link to those edges by simply freeing this node, which means we'll leak memory and references to any roots that we've found. Instead we need to use remove_backref_node(), which walks through all of the edges that are still linked to this node and free's them up and drops any root references we may be holding. CC: stable@vger.kernel.org # 4.9+ Reviewed-by: Qu Wenruo Signed-off-by: Josef Bacik Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/relocation.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -1186,7 +1186,7 @@ out: free_backref_node(cache, lower); } - free_backref_node(cache, node); + remove_backref_node(cache, node); return ERR_PTR(err); } ASSERT(!node || !node->detached);