]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
MIPS: Fix MAX_REG_OFFSET
authorThorsten Blum <thorsten.blum@linux.dev>
Sun, 27 Apr 2025 11:34:24 +0000 (13:34 +0200)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Wed, 30 Apr 2025 18:04:59 +0000 (20:04 +0200)
Fix MAX_REG_OFFSET to point to the last register in 'pt_regs' and not to
the marker itself, which could allow regs_get_register() to return an
invalid offset.

Fixes: 40e084a506eb ("MIPS: Add uprobes support.")
Suggested-by: Maciej W. Rozycki <macro@orcam.me.uk>
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/include/asm/ptrace.h

index 85fa9962266a2b5c15d190eb7a101ee7266f5576..ef72c46b556887f507cb880cedaacb508104a96f 100644 (file)
@@ -65,7 +65,8 @@ static inline void instruction_pointer_set(struct pt_regs *regs,
 
 /* Query offset/name of register from its name/offset */
 extern int regs_query_register_offset(const char *name);
-#define MAX_REG_OFFSET (offsetof(struct pt_regs, __last))
+#define MAX_REG_OFFSET \
+       (offsetof(struct pt_regs, __last) - sizeof(unsigned long))
 
 /**
  * regs_get_register() - get register value from its offset