Patch "hfs: fix B-tree corruption after insertion at position 0" has been added to the 4.2-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
hfs: fix B-tree corruption after insertion at position 0
to the 4.2-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
hfs-fix-b-tree-corruption-after-insertion-at-position-0.patch
and it can be found in the queue-4.2 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
b4cc0efea4f0bfa2477c56af406cfcf3d3e58680Mon Sep 17 00:00:00 2001
From: Hin-Tak Leung <[email protected]>
Date: Wed, 9 Sep 2015 15:38:07 -0700
Subject: hfs: fix B-tree corruption after insertion at position 0
From: Hin-Tak Leung <[email protected]>
commit b4cc0efea4f0bfa2477c56af406cfcf3d3e58680 upstream.
Fix B-tree corruption when a new record is inserted at position 0 in the node in hfs_brec_insert().
This is an identical change to the corresponding hfs b-tree code to Sergei Antonov's "hfsplus: fix B-tree corruption after insertion at position 0", to keep similar code paths in the hfs and hfsplus drivers in sync, where appropriate.
--- fs/hfs/brec.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-)
fs/hfs/brec.c +11 -9
@@ -131,13 +131,16 @@ skip:hfs_bnode_write (node, entry, data_off + key_len, entry_len);hfs_bnode_dump (node); -if (new_node) { -/* update parent key if we inserted a key -* at the start of the first node -*/ -if (!rec && new_node != node) -hfs_brec_update_parent (fd); +/* +* update parent key if we inserted a key +* at the start of the node and it is not the new node +*/ +if (!rec && new_node != node) { +hfs_bnode_read_key (node, fd->search_key, data_off + size); +hfs_brec_update_parent (fd); + } +if (new_node) {hfs_bnode_put (fd->bnode);if (!new_node->parent) {hfs_btree_inc_height (tree);
@@ -166,9 +169,6 @@ skip: goto again; } -if (!rec) -hfs_brec_update_parent (fd); -return 0 ; }
@@ -366,6 +366,8 @@ again:if (IS_ERR (parent))return PTR_ERR (parent);__hfs_brec_find (parent, fd); +if (fd->record <0 ) +return -ENOENT ;hfs_bnode_dump (parent); rec = fd->record;
Patches currently in stable-queue which might be from [email protected] are
queue-4.2/hfs-fix-b-tree-corruption-after-insertion-at-position-0.patch queue-4.2/hfs-hfsplus-cache-pages-correctly-between-bnode_create-and-bnode_free.patch