Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp538609ybz; Wed, 22 Apr 2020 03:15:05 -0700 (PDT) X-Google-Smtp-Source: APiQypKV3H0VCGwZs9ceymWHa+BLz5nY+MozdhiAU0tis/VNYLtu0q4pNHLq8/hj3zsL/MskSyeN X-Received: by 2002:a05:6402:14c8:: with SMTP id f8mr22458298edx.272.1587550505502; Wed, 22 Apr 2020 03:15:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587550505; cv=none; d=google.com; s=arc-20160816; b=v65zrQ0PKQrc0U6ib1ZO0X8QXYYHOE5mWcXLD4MMsZUS9eGk5I7dhpiJK6Lm9S++1v A5lSHFzwk9OLDrXQlOlKiWm4TyEWYQhMXpmCrPKlXwbM97n73nAtd/qDXG/LJBw+SRy4 qTIuHZRVj2id/Xd7D24oDCeokqlP0wiubBwWAMqj8q2jJepUDQMt/8315pgvLoChKMO5 orEkaOPuglBVMNwACK2/wBcFJC+OruGVWPR/rTNIej2Mn7oupdhvjrB5CgKz+417eKw8 xjfPkWlguUErOsRDZ+597k9r2SEylyPF2OjIS5iyEDm9bj6cGm0cLRkdwLtjl3Wwh2ce BUyg== 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=M/VEj8ybm1wyi6wfkM8ZWp/XOgTAjlZEyVWz4Ncjng4=; b=Dmdla7zJ7yYEWwewd7DGNUObtbTrzuDzcHn/UmBbW16TnnL8inFXFIoysJBKOfM0G9 cl7H+8NnvptZbZ2NV/J0nOfvS4e5XVyIjk8+BAW9N8ws8kDgSm60flReRfj9vnaodZ7D iymWCi6b2fdULy2wvXYTdlGshzTf+Cu3yuXpLNYejvM67dtCFnBSiQfANOTGN4z3p+2h +etO9VoYRM4qUGp7/1ke/1apuxJihRxyfRzgbs6l5i3mQs520knI4iyy46aB9AkDb0iC XENfC2RXXh6xiZHu5GpHCnOTmqFYAuKWJMkL1O5zQ95Lg/JDictjEAyMnE8bgBe214pe uaiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bpb9BBKD; 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 h21si3145639ejc.152.2020.04.22.03.14.41; Wed, 22 Apr 2020 03:15:05 -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=bpb9BBKD; 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 S1729035AbgDVKKk (ORCPT + 99 others); Wed, 22 Apr 2020 06:10:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:40470 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728488AbgDVKKe (ORCPT ); Wed, 22 Apr 2020 06:10:34 -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 83D372070B; Wed, 22 Apr 2020 10:10:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587550234; bh=Ja639FxrMib3/dXWNWjCEqNbtbnGORU9JLmmSaPyidY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bpb9BBKDYzQ+LaSYcsCWE+mxM8q3dJ/m6802I7/guUjBfz4UoHyDtyMasgURgSI+E SW63qL3PGPd3u4piqjiLtqDdH6ccFz/EfQC276pJudwwdO+pxXxnYIArtdl7xz8SI7 5hPa3AAq2scgdn1gI+Pxbyw3RJtmw+TKWxgRUNuo= 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.14 064/199] btrfs: drop block from cache on error in relocation Date: Wed, 22 Apr 2020 11:56:30 +0200 Message-Id: <20200422095104.659709437@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200422095057.806111593@linuxfoundation.org> References: <20200422095057.806111593@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 @@ -1194,7 +1194,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);