summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErnesto A. Fernandez <ernesto.mnd.fernandez@gmail.com>2018-08-23 20:00:28 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-08-23 21:48:42 -0400
commitaba93a92f49a002e2251e1745994c762cee01843 (patch)
treed8d9be3fd528099ddabde712850029c72658cdaa
parenta7ec7a4193a2eb3b5341243fc0b621c1ac9e4ec4 (diff)
hfsplus: prevent crash on exit from failed search
hfs_find_exit() expects fd->bnode to be NULL after a search has failed. hfs_brec_insert() may instead set it to an error-valued pointer. Fix this to prevent a crash. Link: http://lkml.kernel.org/r/803590a35221fbf411b2c141419aea3233a6e990.1530294813.git.ernesto.mnd.fernandez@gmail.com Signed-off-by: Ernesto A. Fernandez <ernesto.mnd.fernandez@gmail.com> Reported-by: Anatoly Trosinenko <anatoly.trosinenko@gmail.com> Reviewed-by: Vyacheslav Dubeyko <slava@dubeyko.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/hfsplus/brec.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/hfsplus/brec.c b/fs/hfsplus/brec.c
index 808f4d8c859c..ed8eacb34452 100644
--- a/fs/hfsplus/brec.c
+++ b/fs/hfsplus/brec.c
@@ -73,9 +73,10 @@ int hfs_brec_insert(struct hfs_find_data *fd, void *entry, int entry_len)
73 if (!fd->bnode) { 73 if (!fd->bnode) {
74 if (!tree->root) 74 if (!tree->root)
75 hfs_btree_inc_height(tree); 75 hfs_btree_inc_height(tree);
76 fd->bnode = hfs_bnode_find(tree, tree->leaf_head); 76 node = hfs_bnode_find(tree, tree->leaf_head);
77 if (IS_ERR(fd->bnode)) 77 if (IS_ERR(node))
78 return PTR_ERR(fd->bnode); 78 return PTR_ERR(node);
79 fd->bnode = node;
79 fd->record = -1; 80 fd->record = -1;
80 } 81 }
81 new_node = NULL; 82 new_node = NULL;