* [PATCH 2/2] sparc: chmc: Use buffer lengths when formatting DIMM labels
2026-11-01 13:24 [PATCH 1/2] sparc: chmc: Use strscpy() for unknown DIMM labels Thorsten Blum
@ 2026-11-01 13:24 ` Thorsten Blum
0 siblings, 0 replies; 2+ messages in thread
From: Thorsten Blum @ 2026-11-01 13:24 UTC (permalink / raw)
To: David S. Miller, Andreas Larsson; +Cc: Thorsten Blum, sparclinux, linux-kernel
Replace unbounded sprintf() calls with the safer snprintf() and
scnprintf() to take the buffer lengths into account. When appending
multiple labels, use scnprintf()'s return value instead of manually
calling strlen().
Signed-off-by: Thorsten Blum <blum@kernel.org>
---
arch/sparc/kernel/chmc.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/arch/sparc/kernel/chmc.c b/arch/sparc/kernel/chmc.c
index ef31625272fa..9d7d8f791133 100644
--- a/arch/sparc/kernel/chmc.c
+++ b/arch/sparc/kernel/chmc.c
@@ -318,17 +318,18 @@ static int jbusmc_print_dimm(int syndrome_code,
get_pin_and_dimm_str(syndrome_code, phys_addr, &pin,
&dimm_str, prop, first_dimm);
- sprintf(buf, "%s, pin %3d", dimm_str, pin);
+ snprintf(buf, buflen, "%s, pin %3d", dimm_str, pin);
} else {
- int dimm;
+ int dimm, len;
/* Multi-bit error, we just dump out all the
* dimm labels associated with this dimm group.
*/
for (dimm = 0; dimm < JB_NUM_DIMMS_PER_GROUP; dimm++) {
- sprintf(buf, "%s ",
- prop->dimm_labels[first_dimm + dimm]);
- buf += strlen(buf);
+ len = scnprintf(buf, buflen, "%s ",
+ prop->dimm_labels[first_dimm + dimm]);
+ buf += len;
+ buflen -= len;
}
}
@@ -561,17 +562,18 @@ static int chmc_print_dimm(int syndrome_code,
get_pin_and_dimm_str(syndrome_code, phys_addr, &pin,
&dimm_str, prop, first_dimm);
- sprintf(buf, "%s, pin %3d", dimm_str, pin);
+ snprintf(buf, buflen, "%s, pin %3d", dimm_str, pin);
} else {
- int dimm;
+ int dimm, len;
/* Multi-bit error, we just dump out all the
* dimm labels associated with this bank.
*/
for (dimm = 0; dimm < CHMCTRL_NDIMMS; dimm++) {
- sprintf(buf, "%s ",
- prop->dimm_labels[first_dimm + dimm]);
- buf += strlen(buf);
+ len = scnprintf(buf, buflen, "%s ",
+ prop->dimm_labels[first_dimm + dimm]);
+ buf += len;
+ buflen -= len;
}
}
return 0;
^ permalink raw reply [flat|nested] 2+ messages in thread