Skip to content

Commit 457d182

Browse files
Karthik Balan karthik.b82@samsung.comigaw
authored andcommitted
plugins/ocp: fixed crash in telemetry string log output format json
Fixed the code to handle the json output crash Disabled debug logs output when parsing telemetry-string-log data Signed-off-by: Karthik Balan [email protected] <[email protected]> Reviewed-by: Arunpandian J <[email protected]>
1 parent 3e94c44 commit 457d182

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

plugins/ocp/ocp-nvme.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2502,7 +2502,11 @@ static int get_c9_log_page(struct nvme_dev *dev, char *format)
25022502
return ret;
25032503
}
25042504

2505-
ret = get_c9_log_page_data(dev, 1, 0);
2505+
if (fmt == BINARY)
2506+
ret = get_c9_log_page_data(dev, 0, 1);
2507+
else
2508+
ret = get_c9_log_page_data(dev, 0, 0);
2509+
25062510
if (!ret) {
25072511
ocp_c9_log(log_data, pC9_string_buffer, total_log_page_sz, fmt);
25082512
} else {
@@ -2529,7 +2533,8 @@ static int ocp_telemetry_str_log_format(int argc, char **argv, struct command *c
25292533
};
25302534

25312535
OPT_ARGS(opts) = {
2532-
OPT_FMT("output-format", 'o', &cfg.output_format, "output Format: normal|json"),
2536+
OPT_FMT("output-format", 'o', &cfg.output_format,
2537+
"output Format:normal|json|binary"),
25332538
OPT_END()
25342539
};
25352540

plugins/ocp/ocp-print-json.c

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ static void json_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_dat
569569
json_object_add_value_int(root, "Log Page Version",
570570
le16_to_cpu(log_data->log_page_version));
571571

572-
memset((__u8 *)res, 0, 15);
572+
memset((__u8 *)res, 0, 48);
573573
for (j = 0; j < 15; j++)
574574
res += sprintf(res, "%d", log_data->reserved1[j]);
575575
json_object_add_value_string(root, "Reserved", res_arr);
@@ -581,7 +581,8 @@ static void json_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_dat
581581

582582
json_object_add_value_int(root, "Telemetry String Log Size", le64_to_cpu(log_data->sls));
583583

584-
memset((__u8 *)res, 0, 24);
584+
res = res_arr;
585+
memset((__u8 *)res, 0, 48);
585586
for (j = 0; j < 24; j++)
586587
res += sprintf(res, "%d", log_data->reserved2[j]);
587588
json_object_add_value_string(root, "Reserved", res_arr);
@@ -604,81 +605,97 @@ static void json_c9_log(struct telemetry_str_log_format *log_data, __u8 *log_dat
604605
fifo += sprintf(fifo, "%c", log_data->fifo1[j]);
605606
json_object_add_value_string(root, "FIFO 1 ASCII String", fifo_arr);
606607

608+
fifo = fifo_arr;
607609
memset((void *)fifo, 0, 16);
608610
for (j = 0; j < 16; j++)
609611
fifo += sprintf(fifo, "%c", log_data->fifo2[j]);
610612
json_object_add_value_string(root, "FIFO 2 ASCII String", fifo_arr);
611613

614+
fifo = fifo_arr;
612615
memset((void *)fifo, 0, 16);
613616
for (j = 0; j < 16; j++)
614617
fifo += sprintf(fifo, "%c", log_data->fifo3[j]);
615618
json_object_add_value_string(root, "FIFO 3 ASCII String", fifo_arr);
616619

620+
fifo = fifo_arr;
617621
memset((void *)fifo, 0, 16);
618622
for (j = 0; j < 16; j++)
619623
fifo += sprintf(fifo, "%c", log_data->fifo4[j]);
620624
json_object_add_value_string(root, "FIFO 4 ASCII String", fifo_arr);
621625

626+
fifo = fifo_arr;
622627
memset((void *)fifo, 0, 16);
623628
for (j = 0; j < 16; j++)
624629
fifo += sprintf(fifo, "%c", log_data->fifo5[j]);
625630
json_object_add_value_string(root, "FIFO 5 ASCII String", fifo_arr);
626631

632+
fifo = fifo_arr;
627633
memset((void *)fifo, 0, 16);
628634
for (j = 0; j < 16; j++)
629635
fifo += sprintf(fifo, "%c", log_data->fifo6[j]);
630636
json_object_add_value_string(root, "FIFO 6 ASCII String", fifo_arr);
631637

638+
fifo = fifo_arr;
632639
memset((void *)fifo, 0, 16);
633640
for (j = 0; j < 16; j++)
634641
fifo += sprintf(fifo, "%c", log_data->fifo7[j]);
635642
json_object_add_value_string(root, "FIFO 7 ASCII String", fifo_arr);
636643

644+
fifo = fifo_arr;
637645
memset((void *)fifo, 0, 16);
638646
for (j = 0; j < 16; j++)
639647
fifo += sprintf(fifo, "%c", log_data->fifo8[j]);
640648
json_object_add_value_string(root, "FIFO 8 ASCII String", fifo_arr);
641649

650+
fifo = fifo_arr;
642651
memset((void *)fifo, 0, 16);
643652
for (j = 0; j < 16; j++)
644653
fifo += sprintf(fifo, "%c", log_data->fifo9[j]);
645654
json_object_add_value_string(root, "FIFO 9 ASCII String", fifo_arr);
646655

656+
fifo = fifo_arr;
647657
memset((void *)fifo, 0, 16);
648658
for (j = 0; j < 16; j++)
649659
fifo += sprintf(fifo, "%c", log_data->fifo10[j]);
650660
json_object_add_value_string(root, "FIFO 10 ASCII String", fifo_arr);
651661

662+
fifo = fifo_arr;
652663
memset((void *)fifo, 0, 16);
653664
for (j = 0; j < 16; j++)
654665
fifo += sprintf(fifo, "%c", log_data->fifo11[j]);
655666
json_object_add_value_string(root, "FIFO 11 ASCII String", fifo_arr);
656667

668+
fifo = fifo_arr;
657669
memset((void *)fifo, 0, 16);
658670
for (j = 0; j < 16; j++)
659671
fifo += sprintf(fifo, "%c", log_data->fifo12[j]);
660672
json_object_add_value_string(root, "FIFO 12 ASCII String", fifo_arr);
661673

674+
fifo = fifo_arr;
662675
memset((void *)fifo, 0, 16);
663676
for (j = 0; j < 16; j++)
664677
fifo += sprintf(fifo, "%c", log_data->fifo13[j]);
665678
json_object_add_value_string(root, "FIFO 13 ASCII String", fifo_arr);
666679

680+
fifo = fifo_arr;
667681
memset((void *)fifo, 0, 16);
668682
for (j = 0; j < 16; j++)
669683
fifo += sprintf(fifo, "%c", log_data->fifo14[j]);
670684
json_object_add_value_string(root, "FIFO 14 ASCII String", fifo_arr);
671685

686+
fifo = fifo_arr;
672687
memset((void *)fifo, 0, 16);
673688
for (j = 0; j < 16; j++)
674689
fifo += sprintf(fifo, "%c", log_data->fifo15[j]);
675690
json_object_add_value_string(root, "FIFO 15 ASCII String", fifo_arr);
676691

692+
fifo = fifo_arr;
677693
memset((void *)fifo, 0, 16);
678694
for (j = 0; j < 16; j++)
679695
fifo += sprintf(fifo, "%c", log_data->fifo16[j]);
680696
json_object_add_value_string(root, "FIFO 16 ASCII String", fifo_arr);
681697

698+
res = res_arr;
682699
memset((__u8 *)res, 0, 48);
683700
for (j = 0; j < 48; j++)
684701
res += sprintf(res, "%d", log_data->reserved3[j]);

0 commit comments

Comments
 (0)