Received: by 10.223.185.116 with SMTP id b49csp731762wrg; Wed, 21 Feb 2018 06:06:09 -0800 (PST) X-Google-Smtp-Source: AH8x225ZlWdjzyiZzZPI8LIEhjdRpeapacTHobPUwFKKzXGo8XBGIYmzvRQvCw7qSlLQVOgEkelg X-Received: by 2002:a17:902:63:: with SMTP id 90-v6mr3218143pla.125.1519221969710; Wed, 21 Feb 2018 06:06:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519221969; cv=none; d=google.com; s=arc-20160816; b=ie0VN6XYBvOTbL9/xgekUM/UEkcgoNoffF4KZPrbBdRI6v+/4WT9IEP535+M/FrDDs ny22YM59w2OUVcXJgs65RgqGhmW+EudOvstb46saCvExe2K+2gEPeM5ryhNEyZIqc0Ei ipxkT9z1C9oOvLvtZs9Cd6Oh3pJsvsv4Dlno1LdxPvQ9pZxnZayd2BH3UR4T1xPi3ORc yia8n2LhszNs02vVLwzF/2LrRXzno6Ynkcrw1YgV5wJqyYhsWY47XHJtltjZ4rNtuih9 wCxcjPmGDODke4KYhNyGQFm2vJjbXYO/M8sJnkrMIV3vlr/APlxWV1vPn41wGYKPDS1m Tevw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=lKj4z0WeJJtMSpgo7REdUVwNjwZ6VTBgUaa6Vl+AN1U=; b=n4c/S4UODLMOC99iR2bKmXxCG9/SILjHNpK33+a+XAEW5QmdY/S0/5UmZ5xAAeE62W W1j66Wn+QwfRhzQE2DDyvRh3nm8ljuobhS6xybqtUuwluJHP6xZCWqRM3sOYrWEkY3qG pB67QvLIQsA+HKrnBXpXzwoLzbmjMPHUajuLwbyF/g4wmDV4kxugM/qdp2gl/bIqqNAo SDqdGNEb5caQEdJj+JXUXfHxRz9sW9wLsqxzabIXW4TpKKOgBpDvVW/3YI4+0mm/Us/B hyjHJ3XepURP3mmTruB59RdIDcOSY8rkPT+JSoRqal1rUT1BU/E/KOo7MTFfvXzzep36 1HMA== ARC-Authentication-Results: i=1; mx.google.com; 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 r26si8424133pfi.378.2018.02.21.06.05.53; Wed, 21 Feb 2018 06:06:09 -0800 (PST) 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; 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 S935843AbeBUNEB (ORCPT + 99 others); Wed, 21 Feb 2018 08:04:01 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:39718 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935831AbeBUND6 (ORCPT ); Wed, 21 Feb 2018 08:03:58 -0500 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id A0EC81099; Wed, 21 Feb 2018 13:03:57 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Liu Bo , Josef Bacik , David Sterba Subject: [PATCH 4.14 135/167] Btrfs: fix crash due to not cleaning up tree log blocks dirty bits Date: Wed, 21 Feb 2018 13:49:06 +0100 Message-Id: <20180221124532.026430446@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180221124524.639039577@linuxfoundation.org> References: <20180221124524.639039577@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Liu Bo commit 1846430c24d66e85cc58286b3319c82cd54debb2 upstream. In cases that the whole fs flips into readonly status due to failures in critical sections, then log tree's blocks are still dirty, and this leads to a crash during umount time, the crash is about use-after-free, umount -> close_ctree -> stop workers -> iput(btree_inode) -> iput_final -> write_inode_now -> ... -> queue job on stop'd workers cc: v3.12+ Fixes: 681ae50917df ("Btrfs: cleanup reserved space when freeing tree log on error") Signed-off-by: Liu Bo Reviewed-by: Josef Bacik Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/tree-log.c | 9 +++++++++ 1 file changed, 9 insertions(+) --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -2494,6 +2494,9 @@ static noinline int walk_down_log_tree(s clean_tree_block(fs_info, next); btrfs_wait_tree_block_writeback(next); btrfs_tree_unlock(next); + } else { + if (test_and_clear_bit(EXTENT_BUFFER_DIRTY, &next->bflags)) + clear_extent_buffer_dirty(next); } WARN_ON(root_owner != @@ -2574,6 +2577,9 @@ static noinline int walk_up_log_tree(str clean_tree_block(fs_info, next); btrfs_wait_tree_block_writeback(next); btrfs_tree_unlock(next); + } else { + if (test_and_clear_bit(EXTENT_BUFFER_DIRTY, &next->bflags)) + clear_extent_buffer_dirty(next); } WARN_ON(root_owner != BTRFS_TREE_LOG_OBJECTID); @@ -2652,6 +2658,9 @@ static int walk_log_tree(struct btrfs_tr clean_tree_block(fs_info, next); btrfs_wait_tree_block_writeback(next); btrfs_tree_unlock(next); + } else { + if (test_and_clear_bit(EXTENT_BUFFER_DIRTY, &next->bflags)) + clear_extent_buffer_dirty(next); } WARN_ON(log->root_key.objectid !=