From: Hans Reiser This patch fixes reiser4 bug in error handling path. create_hook_internal missed check of value returned by znode_at against being NULL. Znode_at may return NULL if something works not as expected. Signed-off-by: Vladimir V. Saveliev Signed-off-by: Andrew Morton --- fs/reiser4/plugin/item/internal.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff -puN fs/reiser4/plugin/item/internal.c~reiser4-check-null fs/reiser4/plugin/item/internal.c --- devel/fs/reiser4/plugin/item/internal.c~reiser4-check-null 2005-09-28 22:54:02.000000000 -0700 +++ devel-akpm/fs/reiser4/plugin/item/internal.c 2005-09-28 22:54:02.000000000 -0700 @@ -238,7 +238,7 @@ int create_hook_internal(const coord_t * assert("nikita-1450", item->unit_pos == 0); child = znode_at(item, item->node); - if (!IS_ERR(child)) { + if (child != NULL && !IS_ERR(child)) { znode *left; int result = 0; reiser4_tree *tree; @@ -264,8 +264,11 @@ int create_hook_internal(const coord_t * WUNLOCK_TREE(tree); zput(child); return result; - } else + } else { + if (child == NULL) + child = ERR_PTR(-EIO); return PTR_ERR(child); + } } /* hook called by ->cut_and_kill() method of node plugin just before internal _