From: Li Xi Date: Tue, 11 Jun 2019 12:28:30 +0000 (+0800) Subject: LU-12420 utils: llog_reader handles uninitialized mountdata X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=c8f270a7d7ed92ca408a8ca39c200332042227eb;p=fs%2Flustre-release.git LU-12420 utils: llog_reader handles uninitialized mountdata When reading an mountdata that has never been used, "llog_reader CONFIGS/mountdata" command crashes with following output: Header size : 500170753 Time : Wed Sep 4 00:57:37 6869 Number of records: 65534 Target uuid : ----------------------- Segmentation fault After apply this patch, llog_reader will print following message and quit under this circumstance: Header size : 500170753 Time : Wed Sep 4 00:57:37 6869 Number of records: 65534 Target uuid : ----------------------- uninitialized llog record at index 0 Lustre-change: https://review.whamcloud.com/35178 Lustre-commit: 46f53da979344c88ab985de7227a81240a8107bf Change-Id: I25147f7fd09c6d59ff0049bdb20ac1979cf43ee4 Signed-off-by: Li Xi Reviewed-by: Andreas Dilger Reviewed-by: Wang Shilong Reviewed-by: Li Dongyang Signed-off-by: Etienne AUJAMES Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/48303 Tested-by: jenkins Tested-by: Maloo --- diff --git a/lustre/utils/llog_reader.c b/lustre/utils/llog_reader.c index 6e7064f..b4e4757 100644 --- a/lustre/utils/llog_reader.c +++ b/lustre/utils/llog_reader.c @@ -278,7 +278,7 @@ int llog_pack_buffer(int fd, struct llog_log_hdr **llog, /* the llog header not countable here.*/ recs_num = count - 1; - recs_buf = malloc(recs_num * sizeof(**recs_pr)); + recs_buf = calloc(recs_num, sizeof(**recs_pr)); if (recs_buf == NULL) { rc = -ENOMEM; llapi_error(LLAPI_MSG_ERROR, rc, @@ -934,6 +934,12 @@ static void print_records(struct llog_rec_hdr **recs, int i, skip = 0; for (i = 0; i < rec_number; i++) { + if (recs[i] == NULL) { + llapi_printf(LLAPI_MSG_NORMAL, + "uninitialized llog record at index %d\n", + i); + break; + } printf("#%.2d (%.3d)", __le32_to_cpu(recs[i]->lrh_index), __le32_to_cpu(recs[i]->lrh_len));