From: Bobi Jam Date: Sun, 9 Apr 2017 09:12:19 +0000 (+0800) Subject: LU-9307 lov: NULL pointer deref in lov_delete_composite X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=d8701abb9b576ae295fd4cb861edcbbd36c103a3;p=fs%2Flustre-release.git LU-9307 lov: NULL pointer deref in lov_delete_composite When lov_init_composite() cannot allocate memory and bails out, lov_delete_composite() is then called, and it should check the composite entry's existence before trying to delete each component. Signed-off-by: Bobi Jam Change-Id: I013c596a19a114b763f3eebbaafa1559fa09d8d9 Reviewed-on: https://review.whamcloud.com/26458 Reviewed-by: Jinshan Xiong Tested-by: Jenkins Reviewed-by: Andreas Dilger Tested-by: Maloo --- diff --git a/lustre/lov/lov_object.c b/lustre/lov/lov_object.c index 1d6c8d5..bb974e9 100644 --- a/lustre/lov/lov_object.c +++ b/lustre/lov/lov_object.c @@ -461,14 +461,16 @@ static int lov_delete_composite(const struct lu_env *env, union lov_layout_state *state) { struct lov_layout_entry *entry; + struct lov_layout_composite *comp = &state->composite; ENTRY; dump_lsm(D_INODE, lov->lo_lsm); lov_layout_wait(env, lov); - lov_foreach_layout_entry(lov, entry) - lov_delete_raid0(env, lov, &entry->lle_raid0); + if (comp->lo_entries) + lov_foreach_layout_entry(lov, entry) + lov_delete_raid0(env, lov, &entry->lle_raid0); RETURN(0); }