RE: [PATCH 1/2] hexagon/traps.c: use KSYM_NAME_LEN in array size
From: David Laight <hidden>
Date: 2023-05-30 13:42:25
Also in:
lkml
From: Maninder Singh
Sent: 29 May 2023 12:14 kallsyms_lookup which in turn calls for kallsyms_lookup_buildid() writes on index "KSYM_NAME_LEN - 1". Thus array size should be KSYM_NAME_LEN. for hexagon it was defined as "128" directly. and commit '61968dbc2d5d' changed define value to 512, So both were missed to update with new size.
The only safe way to pass a fixed size string is to embed the char[] in a structure and pass the structure address. Pretty much anything else is doomed to be buggy. Whether is it actually sane to require the caller allocate such a large buffer (hi rust) is another matter entirely. David
quoted hunk ↗ jump to hunk
Fixes: 61968dbc2d5d ("kallsyms: increase maximum kernel symbol length to 512") Co-developed-by: Onkarnath <redacted> Signed-off-by: Onkarnath <redacted> Signed-off-by: Maninder Singh <redacted> --- arch/hexagon/kernel/traps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/arch/hexagon/kernel/traps.c b/arch/hexagon/kernel/traps.c index 6447763ce5a9..65b30b6ea226 100644 --- a/arch/hexagon/kernel/traps.c +++ b/arch/hexagon/kernel/traps.c@@ -82,7 +82,7 @@ static void do_show_stack(struct task_struct *task, unsigned long *fp, const char *name = NULL; unsigned long *newfp; unsigned long low, high; - char tmpstr[128]; + char tmpstr[KSYM_NAME_LEN]; char *modname; int i; --2.17.1
- Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)