The check for empty path groups in disassemble_map() is not quite correct; we might end up removing the pathgroup vector even though there are some entries in it. Signed-off-by: Hannes Reinecke <hare@xxxxxxx> --- libmultipath/dmparser.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-) diff --git a/libmultipath/dmparser.c b/libmultipath/dmparser.c index b3c52fc..a45854d 100644 --- a/libmultipath/dmparser.c +++ b/libmultipath/dmparser.c @@ -232,13 +232,16 @@ disassemble_map (vector pathvec, char * params, struct multipath * mpp) num_pg = atoi(word); FREE(word); - if (num_pg > 0 && !mpp->pg) { - mpp->pg = vector_alloc(); - - if (!mpp->pg) - return 1; - } else + if (num_pg > 0) { + if (!mpp->pg) { + mpp->pg = vector_alloc(); + if (!mpp->pg) + return 1; + } + } else { + free_pgvec(mpp->pg, KEEP_PATHS); mpp->pg = NULL; + } /* * first pg to try -- 1.7.4.2 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel