linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: "Ernesto A. Fernández" <ernesto.mnd.fernandez@gmail.com>,
	"Christoph Hellwig" <hch@infradead.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Linus Torvalds" <torvalds@linux-foundation.org>,
	"Sasha Levin" <sashal@kernel.org>,
	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	[thread overview]
Message-ID: <20181113055223.79060-5-sashal@kernel.org> (raw)
In-Reply-To: <20181113055223.79060-1-sashal@kernel.org>

From: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>

[ 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 <ernesto.mnd.fernandez@gmail.com>
Cc: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 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


  parent reply	other threads:[~2018-11-13  5:52 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-13  5:52 [PATCH AUTOSEL 4.9 01/17] bfs: add sanity check at bfs_fill_super() Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 02/17] cifs: don't dereference smb_file_target before null check Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 03/17] mm/memory_hotplug: make add_memory() take the device_hotplug_lock Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 04/17] reiserfs: propagate errors from fill_with_dentries() properly Sasha Levin
2018-11-13  5:52 ` Sasha Levin [this message]
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 06/17] hfsplus: prevent btree data loss on root split Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 07/17] um: Give start_idle_thread() a return code Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 08/17] drm/edid: Add 6 bpc quirk for BOE panel Sasha Levin
2018-11-21  9:31   ` Daniel Vetter
2018-11-21  9:33     ` Daniel Vetter
2018-11-22 15:53       ` Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 09/17] platform/x86: intel_telemetry: report debugfs failure Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 10/17] clk: fixed-rate: fix of_node_get-put imbalance Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 11/17] fs/exofs: fix potential memory leak in mount option parsing Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 12/17] clk: samsung: exynos5420: Enable PERIS clocks for suspend Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 13/17] platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307 Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 14/17] arm64: percpu: Initialize ret in the default case Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 15/17] mm/vmstat.c: assert that vmstat_text is in sync with stat_items_size Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 16/17] userfaultfd: allow get_mempolicy(MPOL_F_NODE|MPOL_F_ADDR) to trigger userfaults Sasha Levin
2018-11-13  5:52 ` [PATCH AUTOSEL 4.9 17/17] mm: don't warn about large allocations for slab Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181113055223.79060-5-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=ernesto.mnd.fernandez@gmail.com \
    --cc=hch@infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).