Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp668361ybz; Wed, 22 Apr 2020 05:53:26 -0700 (PDT) X-Google-Smtp-Source: APiQypLJeyqzhW9uKg5OoWqo6KAxq5FcqNOYieGeSdzeBiHuZSG5W+8E5SFiiXH1dwxYs7/IETCp X-Received: by 2002:a17:906:bfc9:: with SMTP id us9mr11487176ejb.84.1587560006060; Wed, 22 Apr 2020 05:53:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587560006; cv=none; d=google.com; s=arc-20160816; b=nTtc2upSBfRJN7Q2StqlOlSNCdOZ3imgEVJaqqmY+6uWEL3lmO/c3LehhBFZ9c00y+ yegmP33CAVBosjSSrVdfrlIji1H5qRHJsMdtKg5HJjMsNSBgnwdMB7Tumn1KGs5nHpNU YLSO1vwfujsXLnlxSrGSoM4M/jvHDFSMB/wmAM6uwAShUc3Sx9VGNf/6b0TrUXbDv2Su OUiq/Ye2eLG2nQAWxDujxmDULBm2604uVUOLrhH1G85vgZzT+k1SGVmU+2azD/fPE9do XjT4X4zDkYn0cYpTKyN4qXpuvokO/gK2xMvih0UUn0JGK/a4lgI+1Vr6LJEntOwVk3Uq cfxA== 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=1tSp/LyoYvGqHEOn157OnUM3kGtirqtcTrqpEdGp/og=; b=nIEwP53pXil1ieq7yNyW23jTI/5BtpJ3pUaQqp7j+EoNBHHibNJkZFXsvski+DcvTh NNrjP6ZpD870moY9Kd3z8BDgYw58m4+lJrtcyeITqwff8XtLkEcksYWwfeHKaOt7O5Ba /vSWg1dbQcODRI7MsXKtj96wPCnOUJgvI4YwgzBxWf/yEeDIr2/ZZztN4jTZjXOfz6Z1 bA91Bp2JT38nCeVh+NHEm/9BXAs1UtNX41de1kVNLlWP+KuYDentN47n4cbXXBKpBcBZ nHP6SbDAIIBgJxK5tVXBqYH0ukA3vYLA0gyYFYB0h4eubOHnIQoIlRMH0DHUHvE7vgw6 v/IA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Fytz9uwV; 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 x6si3617432edj.56.2020.04.22.05.53.03; Wed, 22 Apr 2020 05:53:26 -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=Fytz9uwV; 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 S1732278AbgDVK6H (ORCPT + 99 others); Wed, 22 Apr 2020 06:58:07 -0400 Received: from mail.kernel.org ([198.145.29.99]:55034 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728039AbgDVKEd (ORCPT ); Wed, 22 Apr 2020 06:04:33 -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 7C3AF2075A; Wed, 22 Apr 2020 10:04:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587549873; bh=b7CWP8ILYjNqGavujzzxfi1GfBdxFbOnepxjuINjK0s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Fytz9uwV5RjQKO9rjSIcXK5WVcgT4VekuzuROAYbT3rcUTj7RVsvP0dWAdL/ORgGw hMPvjMh4YaQoYxmXNlFWsf25rFVcS+LhQqiwPDnpDgRjZAZaFI3ocfoRQR2I3B1FOE W0eH3CtY41U1MiXbHmXM5uCuOc5w0WtoDzIi/36Y= 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 4.9 040/125] btrfs: drop block from cache on error in relocation Date: Wed, 22 Apr 2020 11:55:57 +0200 Message-Id: <20200422095040.007612140@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200422095032.909124119@linuxfoundation.org> References: <20200422095032.909124119@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 @@ -1185,7 +1185,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);