]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
EDAC/ghes: Replace deprecated strcpy() in ghes_edac_report_mem_error()
authorThorsten Blum <thorsten.blum@linux.dev>
Tue, 18 Nov 2025 13:56:22 +0000 (14:56 +0100)
committerBorislav Petkov (AMD) <bp@alien8.de>
Tue, 18 Nov 2025 15:50:32 +0000 (16:50 +0100)
strcpy() has been deprecated¹ because it performs no bounds checking on the
destination buffer, which can lead to buffer overflows. Use the safer
strscpy() instead.

¹ https://www.kernel.org/doc/html/latest/process/deprecated.html#strcpy

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Link: https://patch.msgid.link/20251118135621.101148-2-thorsten.blum@linux.dev
drivers/edac/ghes_edac.c

index 1eb0136c6fbde9207906c6174de47684a1c632bb..d80c88818691c9432802b432b2f5417dbe96c2af 100644 (file)
@@ -15,6 +15,7 @@
 #include "edac_module.h"
 #include <ras/ras_event.h>
 #include <linux/notifier.h>
+#include <linux/string.h>
 
 #define OTHER_DETAIL_LEN       400
 
@@ -332,7 +333,7 @@ static int ghes_edac_report_mem_error(struct notifier_block *nb,
                p = pvt->msg;
                p += snprintf(p, sizeof(pvt->msg), "%s", cper_mem_err_type_str(etype));
        } else {
-               strcpy(pvt->msg, "unknown error");
+               strscpy(pvt->msg, "unknown error");
        }
 
        /* Error address */
@@ -357,14 +358,14 @@ static int ghes_edac_report_mem_error(struct notifier_block *nb,
                dimm = find_dimm_by_handle(mci, mem_err->mem_dev_handle);
                if (dimm) {
                        e->top_layer = dimm->idx;
-                       strcpy(e->label, dimm->label);
+                       strscpy(e->label, dimm->label);
                }
        }
        if (p > e->location)
                *(p - 1) = '\0';
 
        if (!*e->label)
-               strcpy(e->label, "unknown memory");
+               strscpy(e->label, "unknown memory");
 
        /* All other fields are mapped on e->other_detail */
        p = pvt->other_detail;