Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1391561ybz; Thu, 16 Apr 2020 08:21:47 -0700 (PDT) X-Google-Smtp-Source: APiQypKcsXyfAbbI0h0/fSef/t4T/B/bjr90wB22slFEXQ6VFwpy4eP5CSNqfJFakw0+RGnMMwkD X-Received: by 2002:a17:906:7d02:: with SMTP id u2mr10365893ejo.48.1587050506333; Thu, 16 Apr 2020 08:21:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587050506; cv=none; d=google.com; s=arc-20160816; b=jrX+/JLNhPPj+Je+dB8KTrpFuirRH6PUnOfvFvrakzlRMK7nSsjCZO7AAvh6Mj+rXu g/5PRX7Z5Xg21W47DRlnMp3NZNEr86fmZTYXVy+wMxXR+ODC/934Eoux8bus/sXr1GLA Z6Xe54wbH0i+LpHlL5pYqJ9K665Uo2gX96ahDrHxlk5xRxk10+qCtwKBprHPYDUMd+V1 jnj8YE7W8QVufud/w+a1mhR08y4p7OP4Psde2nMjkMmqDnOGU665nYkWn01wnB9LASfC Gl1Qy1ve4vS5OrtxyoenMm0Roqe+kGEYBCQFqKUngEo4Y91XzAIwwB5yG7psajp1ZuGp oS1A== 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=NQ1p4GlJ9nJ47aABO8CXDJmtwYlnsJ1AbrhCb9aufT8=; b=kc3D7WZUI7wwBFY9HW4+LHZMTZmHbStGP39MJw3mo2G9vc3+HnQieWpKQUJY4Bj7sz nFBuY0rUjKsciC+9EzkTejp9UxlIrmmm7iIm4UbF7YFCDTy3UXvI6IT+3U62FCii4Nmt 8XA39efuyK+qUTSj1El4FVE1A8CdSUT7kJoe7Nn6BLKcUpUvuKEO5RC4DIPGz2Bsw4Mh EwrpqRISIPRoUyBql32ukNjlBuANzbcwTlGMZC86xAeKVsmQfQIdtrIJrAar27wuCNt5 29cGYjHlJ+VAdljkOkkmEs+wmEVVZPgTd+QHmxQUA0Lnp9m+Ve5gYhVd0ySou+EaE+wM faUg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=nXA+YT86; 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 5si750616ejv.400.2020.04.16.08.21.22; Thu, 16 Apr 2020 08:21:46 -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=nXA+YT86; 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 S2442430AbgDPPTF (ORCPT + 99 others); Thu, 16 Apr 2020 11:19:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:34154 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392314AbgDPNsH (ORCPT ); Thu, 16 Apr 2020 09:48:07 -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 B733021734; Thu, 16 Apr 2020 13:48:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587044887; bh=NHSzpWdd0woxrY0Yj64I2OfPbkenwbmRuhHcEx0NkHQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nXA+YT86ZSxRLMn2erzLG8katm3Fxv8qQ+7YCUc2Z8mCFr7vJKjH3tCYTi5mYh+7+ CmgjENkDOqK7hu2N2FDSyYGYoqwlZKaPzHil1Jox72P8RO/vfBvnJxZ8hs+Odp9I3R jTsLqvTHa5z6ReLsBE9Q0ffHUw+ygdNLiBqCKqHA= 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 143/232] btrfs: unset reloc control if we fail to recover Date: Thu, 16 Apr 2020 15:23:57 +0200 Message-Id: <20200416131332.865813442@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 fb2d83eefef4e1c717205bac71cb1941edf8ae11 upstream. If we fail to load an fs root, or fail to start a transaction we can bail without unsetting the reloc control, which leads to problems later when we free the reloc control but still have it attached to the file system. In the normal path we'll end up calling unset_reloc_control() twice, but all it does is set fs_info->reloc_control = NULL, and we can only have one balance at a time so it's not racey. CC: stable@vger.kernel.org # 5.4+ 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 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -4584,9 +4584,8 @@ int btrfs_recover_relocation(struct btrf trans = btrfs_join_transaction(rc->extent_root); if (IS_ERR(trans)) { - unset_reloc_control(rc); err = PTR_ERR(trans); - goto out_free; + goto out_unset; } rc->merge_reloc_tree = 1; @@ -4606,7 +4605,7 @@ int btrfs_recover_relocation(struct btrf if (IS_ERR(fs_root)) { err = PTR_ERR(fs_root); list_add_tail(&reloc_root->root_list, &reloc_roots); - goto out_free; + goto out_unset; } err = __add_reloc_root(reloc_root); @@ -4616,7 +4615,7 @@ int btrfs_recover_relocation(struct btrf err = btrfs_commit_transaction(trans); if (err) - goto out_free; + goto out_unset; merge_reloc_roots(rc); @@ -4632,7 +4631,8 @@ out_clean: ret = clean_dirty_subvols(rc); if (ret < 0 && !err) err = ret; -out_free: +out_unset: + unset_reloc_control(rc); kfree(rc); out: if (!list_empty(&reloc_roots))