Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp4966458imu; Mon, 12 Nov 2018 21:57:11 -0800 (PST) X-Google-Smtp-Source: AJdET5elQUVGgDzq/8cnC32n+l5ixrKhWo4YNoc0bc/bVVG2SX3ol7DmUsBZzxR6813yuI4r/OZe X-Received: by 2002:a17:902:8507:: with SMTP id bj7-v6mr3153761plb.99.1542088630982; Mon, 12 Nov 2018 21:57:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542088630; cv=none; d=google.com; s=arc-20160816; b=V9+3sV1lISwMA6lZPCt+jZWb+zjVJiAmzhgX8WGZV6Fgdzn1HG8R/uNi4q88jTXh8W 3CWkWSuoWZ5RFlYsBBGJhyyIJiolUhcXD9z4XUqV+EN8fUeoIEE0WBf5otSyXk5owS14 FjH5CE5QSZT4Zk3P5mYjN/hiEFHWG/+VaQdEsbwTG0IsuH75iwgdwSBG+gxv51XB5TBu /POZR+ITo3LKuU6HAyilx3Ir3Q0b+nxLz+9BiQdcwk4LCJZPvOTVLO7HaUpvboGZhcx1 iZhPpnyN8HYJC0bXTbklLY1YfaYR4O91R3DvVvj8CVg4ZMs4bw59W7Oxc24J2Xr7y7fs npgw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=vKiUjxaBPJaXK1RdwSHwOaCQCV2zl4SJ7Oo8NseNv9I=; b=mjCslE5RL1smqZ+k2TQD642ZZEH1J77GUYPFear3m+6+lOPcrzM9crVd/wnmY2Tkw1 oPcz+KEMfvNJXib2+o6gw37chnTDF3B82AvtnL9VZ7zMWsKS0xOeJ7k+wAHrVuXyPS8l XPaLd/ncPBGqNyKYcFoonETOvTrL+9q9wDD1483GHVMZU/+UCQy8DyFD5UmpurEjkqce rwBu3nrKYkDgtE+RD/+9z9YN/0qUUBWar9tou+645oM6iQIVd+4O468nUK7/egH8w9ul 15lJAL0ZMcin2zV+ka4/3bmShposxV7bL1aNxmRNj865KKQyufIwl9GWOjfwch9/XZ1f FbmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=OO08qf3f; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o125-v6si18684995pgo.302.2018.11.12.21.56.55; Mon, 12 Nov 2018 21:57:10 -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; dkim=pass header.i=@kernel.org header.s=default header.b=OO08qf3f; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732875AbeKMPtA (ORCPT + 99 others); Tue, 13 Nov 2018 10:49:00 -0500 Received: from mail.kernel.org ([198.145.29.99]:35836 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730934AbeKMPs7 (ORCPT ); Tue, 13 Nov 2018 10:48:59 -0500 Received: from sasha-vm.mshome.net (unknown [64.114.255.114]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A12E122512; Tue, 13 Nov 2018 05:52:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1542088351; bh=yyPooav/5YMIwjliDVDwtbyhMNBSJNjl/ieLCBBtkbo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OO08qf3f2+j2iCwbYjfd9VdZYreelkD4rSmDaSJO9VQoVPWWbZiVDhL1EQaI3Trkj gEf66IhJV3oKjnbFJCfB2DAjPBWbKYoGfHQaj9xwTL/QUQjeXnnyn/GqZrs2ldrd48 8l3Y6oA9cIWFoLdVu+U8aa8dkqLHD+oxjfmE2m8E= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Ernesto=20A=2E=20Fern=C3=A1ndez?= , Christoph Hellwig , Andrew Morton , Linus Torvalds , Sasha Levin , linux-fsdevel@vger.kernel.org Subject: [PATCH AUTOSEL 4.9 05/17] hfs: prevent btree data loss on root split Date: Tue, 13 Nov 2018 00:52:11 -0500 Message-Id: <20181113055223.79060-5-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181113055223.79060-1-sashal@kernel.org> References: <20181113055223.79060-1-sashal@kernel.org> 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: Ernesto A. Fernández [ Upstream commit d057c036672f33d43a5f7344acbb08cf3a8a0c09 ] This bug is triggered whenever hfs_brec_update_parent() needs to split the root node. The height of the btree is not increased, which leaves the new node orphaned and its records lost. It is not possible for this to happen on a valid hfs filesystem because the index nodes have fixed length keys. For reasons I ignore, the hfs module does have support for a number of hfsplus features. A corrupt btree header may report variable length keys and trigger this bug, so it's better to fix it. Link: http://lkml.kernel.org/r/9750b1415685c4adca10766895f6d5ef12babdb0.1535682463.git.ernesto.mnd.fernandez@gmail.com Signed-off-by: Ernesto A. Fernández Cc: Christoph Hellwig Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin --- fs/hfs/brec.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/hfs/brec.c b/fs/hfs/brec.c index 2a6f3c67cb3f..2e713673df42 100644 --- a/fs/hfs/brec.c +++ b/fs/hfs/brec.c @@ -424,6 +424,10 @@ static int hfs_brec_update_parent(struct hfs_find_data *fd) if (new_node) { __be32 cnid; + if (!new_node->parent) { + hfs_btree_inc_height(tree); + new_node->parent = tree->root; + } fd->bnode = hfs_bnode_find(tree, new_node->parent); /* create index key and entry */ hfs_bnode_read_key(new_node, fd->search_key, 14); -- 2.17.1