#
f78fe930 |
| 14-Jan-2025 |
Mark Johnston <markj@FreeBSD.org> |
audit: Fix short-circuiting in syscallenter()
syscallenter() has a slow path to handle syscall auditing and dtrace syscall tracing. It uses AUDIT_SYSCALL_ENTER() to check whether to take the slow p
audit: Fix short-circuiting in syscallenter()
syscallenter() has a slow path to handle syscall auditing and dtrace syscall tracing. It uses AUDIT_SYSCALL_ENTER() to check whether to take the slow path, but this macro also has side effects: it writes the audit log entry. When systrace (dtrace syscall tracing) is enabled, this would get short-circuited, and we end up not writing audit log entries.
Introduce a pure macro to check whether auditing is enabled, use it in syscallenter() instead of AUDIT_SYSCALL_ENTER().
Reviewed by: kib Reported by: Joe Duin <jd@firexfly.com> Fixes: 2f7292437d0c ("Merge audit and systrace checks") MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48448
show more ...
|
Revision tags: release/14.2.0, release/13.4.0, release/14.1.0 |
|
#
05296a0f |
| 06-Apr-2024 |
Jake Freeland <jfree@FreeBSD.org> |
ktrace: Record syscall violations with KTR_CAPFAIL
Report syscalls that are not allowed in capability mode with CAPFAIL_SYSCALL.
Reviewed by: markj Approved by: markj (mentor) MFC after: 1 month Di
ktrace: Record syscall violations with KTR_CAPFAIL
Report syscalls that are not allowed in capability mode with CAPFAIL_SYSCALL.
Reviewed by: markj Approved by: markj (mentor) MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D40678
show more ...
|
Revision tags: release/13.3.0 |
|
#
29363fb4 |
| 23-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove ancient SCCS tags.
Remove ancient SCCS tags from the tree, automated scripting, with two minor fixup to keep things compiling. All the common forms in the tree were removed with a perl s
sys: Remove ancient SCCS tags.
Remove ancient SCCS tags from the tree, automated scripting, with two minor fixup to keep things compiling. All the common forms in the tree were removed with a perl script.
Sponsored by: Netflix
show more ...
|
Revision tags: release/14.0.0 |
|
#
39024a89 |
| 25-Sep-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
syscalls: fix missing SIGSYS for several ENOSYS errors
In particular, when the syscall number is too large, or when syscall is dynamic. For that, add nosys_sysent structure to pass fake sysent to s
syscalls: fix missing SIGSYS for several ENOSYS errors
In particular, when the syscall number is too large, or when syscall is dynamic. For that, add nosys_sysent structure to pass fake sysent to syscall top code.
Reviewed by: dchagin, markj Discussed with: jhb Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D41976
show more ...
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
Revision tags: release/13.2.0 |
|
#
f0592b3c |
| 01-Dec-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
Add a thread debugging flag TDB_BOUNDARY
It indicates to a debugger that the thread is stopped at the kernel->user exit path.
Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 we
Add a thread debugging flag TDB_BOUNDARY
It indicates to a debugger that the thread is stopped at the kernel->user exit path.
Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D37590
show more ...
|
Revision tags: release/12.4.0, release/13.1.0 |
|
#
b53133a7 |
| 12-Feb-2022 |
Mateusz Guzik <mjg@FreeBSD.org> |
proc: load/store p_cowgen using atomic primitives
|
#
626d6992 |
| 26-Dec-2021 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Move fork_rfppwait() check into ast()
This will always sleep at least once, so it's a slow path by definition.
Reviewed By: kib Sponsored By: EPSRC Differential Revision: https://reviews.freebsd.or
Move fork_rfppwait() check into ast()
This will always sleep at least once, so it's a slow path by definition.
Reviewed By: kib Sponsored By: EPSRC Differential Revision: https://reviews.freebsd.org/D33387
show more ...
|
Revision tags: release/12.3.0 |
|
#
8bbc0600 |
| 30-Oct-2021 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
linux: Add additional ptracestop only if the debugger is Linux
In 6e66030c4c0, additional ptracestop was added in order to implement PTRACE_EVENT_EXEC. Make it only apply to cases where the debugge
linux: Add additional ptracestop only if the debugger is Linux
In 6e66030c4c0, additional ptracestop was added in order to implement PTRACE_EVENT_EXEC. Make it only apply to cases where the debugger is a Linux processes; native FreeBSD debuggers can trace Linux processes too, but they don't expect that additonal ptracestop.
Fixes: 6e66030c4c0 Reported By: kib Reviewed By: kib Sponsored By: EPSRC Differential Revision: https://reviews.freebsd.org/D32726
show more ...
|
#
6e66030c |
| 23-Oct-2021 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
linux: implement PTRACE_EVENT_EXEC
This fixes strace(1) from Ubuntu Focal.
Reviewed By: jhb Sponsored By: EPSRC Differential Revision: https://reviews.freebsd.org/D32367
|
#
a0558fe9 |
| 28-Apr-2021 |
Mateusz Guzik <mjg@FreeBSD.org> |
Retire code added to support CloudABI
CloudABI was removed in cf0ee8738e31aa9e6fbf4dca4dac56d89226a71a
|
#
cf98bc28 |
| 10-Jul-2021 |
David Chisnall <theraven@FreeBSD.org> |
Pass the syscall number to capsicum permission-denied signals
The syscall number is stored in the same register as the syscall return on amd64 (and possibly other architectures) and so it is impossi
Pass the syscall number to capsicum permission-denied signals
The syscall number is stored in the same register as the syscall return on amd64 (and possibly other architectures) and so it is impossible to recover in the signal handler after the call has returned. This small tweak delivers it in the `si_value` field of the signal, which is sufficient to catch capability violations and emulate them with a call to a more-privileged process in the signal handler.
This reapplies 3a522ba1bc852c3d4660a4fa32e4a94999d09a47 with a fix for the static assertion failure on i386.
Approved by: markj (mentor)
Reviewed by: kib, bcr (manpages)
Differential Revision: https://reviews.freebsd.org/D29185
show more ...
|
#
d2b55828 |
| 10-Jul-2021 |
David Chisnall <theraven@FreeBSD.org> |
Revert "Pass the syscall number to capsicum permission-denied signals"
This broke the i386 build.
This reverts commit 3a522ba1bc852c3d4660a4fa32e4a94999d09a47.
|
#
3a522ba1 |
| 10-Jul-2021 |
David Chisnall <theraven@FreeBSD.org> |
Pass the syscall number to capsicum permission-denied signals
The syscall number is stored in the same register as the syscall return on amd64 (and possibly other architectures) and so it is impossi
Pass the syscall number to capsicum permission-denied signals
The syscall number is stored in the same register as the syscall return on amd64 (and possibly other architectures) and so it is impossible to recover in the signal handler after the call has returned. This small tweak delivers it in the `si_value` field of the signal, which is sufficient to catch capability violations and emulate them with a call to a more-privileged process in the signal handler.
Approved by: markj (mentor)
Reviewed by: kib, bcr (manpages)
Differential Revision: https://reviews.freebsd.org/D29185
show more ...
|
Revision tags: release/13.0.0 |
|
#
441eb16a |
| 13-Nov-2020 |
Konstantin Belousov <kib@FreeBSD.org> |
Allow some VOPs to return ERELOOKUP to indicate VFS operation restart at top level.
Restart syscalls and some sync operations when filesystem indicated ERELOOKUP condition, mostly for VOPs operating
Allow some VOPs to return ERELOOKUP to indicate VFS operation restart at top level.
Restart syscalls and some sync operations when filesystem indicated ERELOOKUP condition, mostly for VOPs operating on metdata. In particular, lookup results cached in the inode/v_data is no longer valid and needs recalculating. Right now this should be nop.
Assert that ERELOOKUP is catched everywhere and not returned to userspace, by asserting that td_errno != ERELOOKUP on syscall return path.
In collaboration with: pho Reviewed by: mckusick (previous version), markj Tested by: markj (syzkaller), pho Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D26136
show more ...
|
#
a1bd83fe |
| 08-Nov-2020 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Move syscall_thread_{enter,exit}() into the slow path. This is only needed for syscalls from unloadable modules.
Reviewed by: kib MFC after: 2 weeks Sponsored by: EPSRC Differential Revision: https
Move syscall_thread_{enter,exit}() into the slow path. This is only needed for syscalls from unloadable modules.
Reviewed by: kib MFC after: 2 weeks Sponsored by: EPSRC Differential Revision: https://reviews.freebsd.org/D26988
show more ...
|
#
da45ea6b |
| 07-Nov-2020 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Move TDB_USERWR check under 'if (traced)'.
If we hadn't been traced in the first place when syscallenter() started executing, we can ignore TDB_USERWR. TDB_USERWR can get set, sure, but if it does,
Move TDB_USERWR check under 'if (traced)'.
If we hadn't been traced in the first place when syscallenter() started executing, we can ignore TDB_USERWR. TDB_USERWR can get set, sure, but if it does, it's because the debugger raced with the syscall, and it cannot depend on winning that race.
Reviewed by: kib MFC after: 2 weeks Sponsored by: EPSRC Differential Revision: https://reviews.freebsd.org/D26585
show more ...
|
#
bdc0cb4e |
| 28-Oct-2020 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Add local variable to store the sysent pointer. Just a cleanup, no functional changes.
Reviewed by: kib (earlier version) MFC after: 2 weeks Sponsored by: EPSRC Differential Revision: https://revie
Add local variable to store the sysent pointer. Just a cleanup, no functional changes.
Reviewed by: kib (earlier version) MFC after: 2 weeks Sponsored by: EPSRC Differential Revision: https://reviews.freebsd.org/D26977
show more ...
|
#
275c821d |
| 24-Oct-2020 |
Kyle Evans <kevans@FreeBSD.org> |
audit: correct reporting of *execve(2) success
r326145 corrected do_execve() to return EJUSTRETURN upon success so that important registers are not clobbered. This had the side effect of tapping out
audit: correct reporting of *execve(2) success
r326145 corrected do_execve() to return EJUSTRETURN upon success so that important registers are not clobbered. This had the side effect of tapping out 'failures' for all *execve(2) audit records, which is less than useful for auditing purposes.
Audit exec returns earlier, where we can know for sure that EJUSTRETURN translates to success. Note that this unsets TDP_AUDITREC as we commit the audit record, so the usual audit in the syscall return path will do nothing.
PR: 249179 Reported by: Eirik Oeverby <ltning-freebsd anduin net> Reviewed by: csjp, kib MFC after: 1 week Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D26922
show more ...
|
Revision tags: release/12.2.0 |
|
#
4c6f466c |
| 01-Oct-2020 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Only clear TDP_NERRNO when needed, ie when it's previously been set.
Reviewed by: kib Tested by: pho Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D26612
|
#
34098649 |
| 29-Sep-2020 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Use the 'traced' variable instead of comparing p->p_flag again.
Reviewed by: kib Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D26577
|
#
1e2521ff |
| 27-Sep-2020 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Get rid of sa->narg. It serves no purpose; use sa->callp->sy_narg instead.
Reviewed by: kib Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D26458
|
Revision tags: release/11.4.0 |
|
#
59838c1a |
| 01-Apr-2020 |
John Baldwin <jhb@FreeBSD.org> |
Retire procfs-based process debugging.
Modern debuggers and process tracers use ptrace() rather than procfs for debugging. ptrace() has a supserset of functionality available via procfs and new deb
Retire procfs-based process debugging.
Modern debuggers and process tracers use ptrace() rather than procfs for debugging. ptrace() has a supserset of functionality available via procfs and new debugging features are only added to ptrace(). While the two debugging services share some fields in struct proc, they each use dedicated fields and separate code. This results in extra complexity to support a feature that hasn't been enabled in the default install for several years.
PR: 244939 (exp-run) Reviewed by: kib, mjg (earlier version) Relnotes: yes Differential Revision: https://reviews.freebsd.org/D23837
show more ...
|
#
91019ea7 |
| 29-Feb-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r358400 through r358465.
|
#
46994ec2 |
| 28-Feb-2020 |
Mark Johnston <markj@FreeBSD.org> |
Fix standalone builds of systrace.ko after r357912.
Sponsored by: The FreeBSD Foundation
|