Skip to content

Commit dfc6014

Browse files
SherrySun5suryasaimadhu
authored andcommitted
EDAC/synopsys: Do not print an error with back-to-back snprintf() calls
handle_error() currently calls snprintf() a couple of times in succession to output the message for a CE/UE, therefore overwriting each part of the message which was formatted with the previous snprintf() call. As a result, only the part of the message from the last snprintf() call will be printed. The simplest and most effective way to fix this problem is to combine the whole string into one which to supply to a single snprintf() call. [ bp: Massage. ] Fixes: b500b4a ("EDAC, synopsys: Add ECC support for ZynqMP DDR controller") Signed-off-by: Sherry Sun <[email protected]> Signed-off-by: Borislav Petkov <[email protected]> Reviewed-by: James Morse <[email protected]> Cc: Manish Narani <[email protected]> Link: https://lkml.kernel.org/r/[email protected]
1 parent f8788d8 commit dfc6014

File tree

1 file changed

+7
-15
lines changed

1 file changed

+7
-15
lines changed

drivers/edac/synopsys_edac.c

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -479,20 +479,14 @@ static void handle_error(struct mem_ctl_info *mci, struct synps_ecc_status *p)
479479
pinf = &p->ceinfo;
480480
if (!priv->p_data->quirks) {
481481
snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
482-
"DDR ECC error type:%s Row %d Bank %d Col %d ",
483-
"CE", pinf->row, pinf->bank, pinf->col);
484-
snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
485-
"Bit Position: %d Data: 0x%08x\n",
482+
"DDR ECC error type:%s Row %d Bank %d Col %d Bit Position: %d Data: 0x%08x",
483+
"CE", pinf->row, pinf->bank, pinf->col,
486484
pinf->bitpos, pinf->data);
487485
} else {
488486
snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
489-
"DDR ECC error type:%s Row %d Bank %d Col %d ",
490-
"CE", pinf->row, pinf->bank, pinf->col);
491-
snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
492-
"BankGroup Number %d Block Number %d ",
493-
pinf->bankgrpnr, pinf->blknr);
494-
snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
495-
"Bit Position: %d Data: 0x%08x\n",
487+
"DDR ECC error type:%s Row %d Bank %d Col %d BankGroup Number %d Block Number %d Bit Position: %d Data: 0x%08x",
488+
"CE", pinf->row, pinf->bank, pinf->col,
489+
pinf->bankgrpnr, pinf->blknr,
496490
pinf->bitpos, pinf->data);
497491
}
498492

@@ -509,10 +503,8 @@ static void handle_error(struct mem_ctl_info *mci, struct synps_ecc_status *p)
509503
"UE", pinf->row, pinf->bank, pinf->col);
510504
} else {
511505
snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
512-
"DDR ECC error type :%s Row %d Bank %d Col %d ",
513-
"UE", pinf->row, pinf->bank, pinf->col);
514-
snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
515-
"BankGroup Number %d Block Number %d",
506+
"DDR ECC error type :%s Row %d Bank %d Col %d BankGroup Number %d Block Number %d",
507+
"UE", pinf->row, pinf->bank, pinf->col,
516508
pinf->bankgrpnr, pinf->blknr);
517509
}
518510

0 commit comments

Comments
 (0)