Page MenuHomeFreeBSD

fbt/x86: update FBT_AFRAMES to match the trap handlers
ClosedPublic

Authored by chs on May 11 2023, 1:41 AM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Mar 7, 12:07 PM
Unknown Object (File)
Thu, Mar 7, 8:36 AM
Unknown Object (File)
Feb 23 2024, 9:26 PM
Unknown Object (File)
Jan 14 2024, 9:31 AM
Unknown Object (File)
Dec 20 2023, 8:11 AM
Unknown Object (File)
Sep 6 2023, 8:39 AM
Unknown Object (File)
Aug 14 2023, 12:45 PM
Unknown Object (File)
Jun 30 2023, 8:58 PM
Subscribers

Details

Test Plan
apply this diff for test purposes

diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index d68af4ea4d51..21afbaa95822 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -978,6 +978,43 @@ struct chroot_args {
 	char	*path;
 };
 #endif
+
+
+
+volatile int chuq_notailcalls;
+
+void
+chuq_f3(void);
+void
+chuq_f2(void);
+void
+chuq_f1(void);
+
+int chuq_spin = 1;
+
+__noinline void
+chuq_f3(void)
+{
+	int i;
+
+	for (i = 0; i < chuq_spin; i++)
+		chuq_notailcalls++;
+}
+
+__noinline void
+chuq_f2(void)
+{
+	chuq_f3();
+	chuq_notailcalls++;
+}
+
+__noinline void
+chuq_f1(void)
+{
+	chuq_f2();
+	chuq_notailcalls++;
+}
+
 int
 sys_chroot(struct thread *td, struct chroot_args *uap)
 {
@@ -985,6 +1022,7 @@ sys_chroot(struct thread *td, struct chroot_args *uap)
 	struct proc *p;
 	int error;
 
+	chuq_f1();
 	error = priv_check(td, PRIV_VFS_CHROOT);
 	if (error != 0) {
 		p = td->td_proc;



dtrace -n 'fbt::chuq_f3:entry { stack(); }'


existing value
#define FBT_AFRAMES 3

CPU     ID                    FUNCTION:NAME
  3  55035                    chuq_f3:entry 
              kernel`chuq_f2+0x9
              kernel`sys_chroot+0x1f
              kernel`amd64_syscall+0x109
              kernel`0xffffffff8100b21b



test value to see how many dtrace frames show up
#define FBT_AFRAMES 0

CPU     ID                    FUNCTION:NAME
  3  55035                    chuq_f3:entry 
              kernel`chuq_f2+0x9
              dtrace.ko`dtrace_invop+0x4c
              dtrace.ko`dtrace_invop_callsite
              kernel`chuq_f1+0x9
              kernel`sys_chroot+0x1f
              kernel`amd64_syscall+0x109
              kernel`0xffffffff8100b21b



correct value
#define FBT_AFRAMES 2

CPU     ID                    FUNCTION:NAME
  3  55035                    chuq_f3:entry 
              kernel`chuq_f2+0x9
              kernel`chuq_f1+0x9
              kernel`sys_chroot+0x1f
              kernel`amd64_syscall+0x109
              kernel`0xffffffff8100b21b

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable