Received: by 10.223.185.116 with SMTP id b49csp688345wrg; Wed, 21 Feb 2018 05:25:42 -0800 (PST) X-Google-Smtp-Source: AH8x226cuEnt2yywFVtDz9CE6df2TDzvI8aI/UGiimMgc1xDsmC7Y/A2rCVR6Er0dXQaeO9atE2z X-Received: by 10.98.237.21 with SMTP id u21mr3348736pfh.190.1519219542062; Wed, 21 Feb 2018 05:25:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519219542; cv=none; d=google.com; s=arc-20160816; b=sz/2Epnn49tBQLZHFDSfRaXqehC5C8s3yJ9CuQXEejX43JXWXbYnbVn8W/E5LvXbSc swa6V5BW1JkYD9flOaNEKojclGwbvnLqQadYhsbqHhhhOegqfx9eM0fOCO63LCsERO7j 86anXLUyZ4lKyMOuvpXwCDJSLEvXT0K4WXajyewVDW8ttOxjqaRnKpaIa7p/8YtCVMNt Ko5Hapce7HnkN9H0flCjrMN+lp69tUiJYTjgj5lfStCJN3oPHOxHP3aQsxk08NhU0j+o K4rN4Z2xH+Hx1IbceCmEw8EW1HX64eqxtQ9VSzZjPmafzkGsb7Aa7wrQnqXl868kCT8r ei1Q== 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=tfiytU9hJOiuIEJJiEB1Wzm0ZQZQfy0epZ1v2NMD9M8=; b=uoxHDBKmujD9i0QGghK533s2PioUg6VRJiMXWyj9qsUvT5tJtdJzoFKoaERj3o4hzH 6S4KJMk6WdzlexwA5v6XnXhqNkzVfWrpX3yn4M64qFFt0xsRwglEuYuiae4gik401035 mATrUSuPESLJ0y6hXmYwxVy9F4ja/HltfDJgO5KW03Dodx0I2CzSfzRDbYT9tYW77HUT OCBE+jaxZ7G47NEcDsaT1W1PZewvmdANZLuBpkUfCLBLPLH/LrnRD4h3fwGbZm8anhXn vtQurQOfdfLVmIOsTbRPzpTM9GvU4WbwZDswjqr6hz+v+MZ203G1rPPZgttgXCiSJkVx 8+dg== 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 k7si6131405pgp.153.2018.02.21.05.25.25; Wed, 21 Feb 2018 05:25:42 -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 S932250AbeBUMvV (ORCPT + 99 others); Wed, 21 Feb 2018 07:51:21 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:59172 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751686AbeBUMpr (ORCPT ); Wed, 21 Feb 2018 07:45:47 -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 7E0941218; Wed, 21 Feb 2018 12:45:46 +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.4 20/33] Btrfs: fix crash due to not cleaning up tree log blocks dirty bits Date: Wed, 21 Feb 2018 13:45:03 +0100 Message-Id: <20180221124410.645285301@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180221124409.564661689@linuxfoundation.org> References: <20180221124409.564661689@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.4-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 @@ -2445,6 +2445,9 @@ static noinline int walk_down_log_tree(s 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 != @@ -2524,6 +2527,9 @@ static noinline int walk_up_log_tree(str 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); @@ -2600,6 +2606,9 @@ static int walk_log_tree(struct btrfs_tr clean_tree_block(trans, log->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 !=