Re: [PATCH v4 26/39] unwind_user/sframe: Enable debugging in uaccess regions

Jens Remus
2025-01-30T16:39:18Z

On 22.01.2025 03:31, Josh Poimboeuf wrote:
> Objtool warns about calling pr_debug() from uaccess-enabled regions, and
> rightfully so. Add a dbg_sec_uaccess() macro which temporarily disables
> uaccess before doing the dynamic printk, and use that to add debug
> messages throughout the uaccess-enabled regions.
>
> Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>

> diff --git a/kernel/unwind/sframe.c b/kernel/unwind/sframe.c

> @@ -53,12 +53,15 @@ static __always_inline int __read_fde(struct sframe_section *sec,
> sizeof(struct sframe_fde), Efault);
>
> ip = sec->sframe_start + fde->start_addr;
> - if (ip < sec->text_start || ip > sec->text_end)
> + if (ip < sec->text_start || ip > sec->text_end) {
> + dbg_sec_uaccess("bad fde num %d\n", fde_num);
> return -EINVAL;
> + }
>
> return 0;
>
> Efault:
> + dbg_sec_uaccess("fde %d usercopy failed\n", fde_num);
> return -EFAULT;
> }

Add a similar debug message for SFRame FDE user copy failures?

diff --git a/kernel/unwind/sframe.c b/kernel/unwind/sframe.c

@@ -125,6 +125,7 @@ static __always_inline int __find_fde(struct sframe_section *sec,
return 0;

Efault:
+ dbg_sec_uaccess("fde usercopy failed\n");
return -EFAULT;
}

Printing the IP is probably not an option due to security concerns?
Printing the the CFA, FP, and RA offsets is too much traffic? To debug
issues on s390 I had to add tons of additional debug messages to make
sense of what was actually going on.

Regards,
Jens
--
Jens Remus
Linux on Z Development (D3303)
+49-7031-16-1128 Office
jremus@de.ibm.com

IBM

IBM Deutschland Research & Development GmbH; Vorsitzender des Aufsichtsrats: Wolfgang Wendt; Geschäftsführung: David Faller; Sitz der Gesellschaft: Böblingen; Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM Data Privacy Statement: https://www.ibm.com/privacy/