]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
hfs: prevent btree data loss on root split
authorErnesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Tue, 30 Oct 2018 22:06:07 +0000 (15:06 -0700)
committerJuerg Haefliger <juergh@canonical.com>
Wed, 24 Jul 2019 02:00:07 +0000 (20:00 -0600)
commit824090325175b24f3734cf8fa371aecc5cfc501c
treee83cb90fd42680edbc263d4b7a84ed1d5be1eaaa
parenta0a02be53c22c5f38f092fa62e5ff5ce46b857e0
hfs: prevent btree data loss on root split

BugLink: https://bugs.launchpad.net/bugs/1836968
[ 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>
Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
fs/hfs/brec.c