Home | History | Annotate | Download | only in kern
History log of /src/sys/kern/sys_sig.c
RevisionDateAuthorComments
 1.58  14-Jul-2024  kre PR kern/58425 -- Disallow INT_MIN as a (negative) pid arg.

Since -INT_MIN is undefined, and to point of negative pid args is
to negate them, and use the result as a pgrp id instead, we need
to avoid accidentally negating INT_MIN.

Since pid_t is just an integral type, of unspecified width, when
testing pid_t value test for <= INT_MIN (or > INT_MIN sometimes)
rather than == INT_MIN. When testing int values, just == INT_MIN
is all that is needed, < INT_MIN cannot occur.

XXX pullup -9, -10
 1.57  04-Oct-2023  ad branches: 1.57.6;
Sprinkle a bunch more calls to lwp_need_userret(). There should be no
functional change but it does get rid of a bunch of assumptions about how
mi_userret() works making it easier to adjust in that in the future, and
works as a kind of documentation too.
 1.56  21-Apr-2022  andvar branches: 1.56.4;
s/substract/subtract/ in comments and error message.
s/obtainted/obtained/ in one comment.
 1.55  07-Nov-2021  thorpej Add a comment describing why we give carte blanche to processes
marked as PK_32. NFC.
 1.54  01-Nov-2021  thorpej Use "stack_t" instead of "struct sigaltstack", as the former is the
newer standardized name. NFC.
 1.53  27-Oct-2021  thorpej - In sendsig() and sigaction1(), don't hard-code signal trampoline
versions. Instead, use the version constants from <sys/signal.h>
and automatically (and correctly) handle cases where multiple versions
of a particular trampoline flavor exist. Conditionalize support
for sigcontext trampolines on __HAVE_STRUCT_SIGCONTEXT.
- aarch64 and amd64 don't use sigcontext natively, but do need to
support it for 32-bit compatibility; define __HAVE_STRUCT_SIGCONTEXT
conditionally on _KERNEL.
 1.52  23-Sep-2021  ryo Since trampoline ABI ver0 is also used in other emulation environments (e.g. linux emulation),
checking (emul->e_sigobject != NULL) to determine if it is allowed or not.
 1.51  23-May-2020  ad Move proc_lock into the data segment. It was dynamically allocated because
at the time we had mutex_obj_alloc() but not __cacheline_aligned.
 1.50  10-Nov-2019  pgoyette Convert the sendsig_sigcontext_16 function pointer to use the new
compat_hook mechanism.

XXX Despite being a kernel<-->module abi change, this should be
XXX pulled up to -9
 1.49  09-Nov-2019  pgoyette If we need to handle old-version signals, load the version-specific
"compat_16" module. There is no longer a monolithic "compat" module!

XXX pullup-9 needed
 1.48  08-Sep-2019  maxv Introduce sigaction_copy(), to copy sigaction structures without padding,
and use it in sigaction1(). This is to fix info leaks all at once in the
signal functions.
 1.47  01-Dec-2018  maxv branches: 1.47.4;
Fix kernel info leak, 4 bytes of padding in struct _ksiginfo. Maybe we
should just set _pad to zero on LP64?

+ Possible info leak: [len=40, leaked=4]
| #0 0xffffffff80baf397 in kleak_copyout
| #1 0xffffffff80bda817 in sigtimedwait1
| #2 0xffffffff80bdab95 in sys_____sigtimedwait50
| #3 0xffffffff80259c42 in syscall
 1.46  04-Aug-2016  christos branches: 1.46.8; 1.46.14; 1.46.16;
Realtime signal support from GSoC 2016, Charles Cui.
 1.45  02-Oct-2015  christos branches: 1.45.2;
Change SDT (Statically Defined Tracing) probes to use link sets so that it
is easier to add probes. (From FreeBSD)
 1.44  19-Jun-2015  martin Make kill1 public (we'll need it from compat/netbsd32)
 1.43  18-Oct-2014  snj branches: 1.43.2;
src is too big these days to tolerate superfluous apostrophes. It's
"its", people!
 1.42  14-Feb-2014  christos branches: 1.42.4; 1.42.6; 1.42.10;
Don't check trampolines for SIG_DFL or SIG_IGN since they are not used.
From gimpy.
 1.41  08-Mar-2013  apb branches: 1.41.6;
Properly differentiate between infinite timeout and zero timeout.
Local variable timo = -1 is used for zero timeout (non blocking mode).

Fixes PR 47625 from anthony.mallet
 1.40  08-Mar-2013  apb In the timeout passed to sigtimedwait, NULL means an infinite timeout,
and {.tv_sec = 0, .tv_nsec=0} means do not block at all. Add a comment
saying so. The code incorrectly treats them both as an infinite timeout,
and that is not fixed by this commit.
 1.39  22-Jan-2013  christos It is useless to check for sigcontext_vec and compat module loading for
PK_32 processes. The correct modules are already loaded, otherwise how
is the process running?
 1.38  18-Jul-2012  christos branches: 1.38.2;
From Roger Pau Monne: kill(2) called for a zombie process should return 0,
according to:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html
 1.37  19-Feb-2012  rmind Remove COMPAT_SA / KERN_SA. Welcome to 6.99.3!
Approved by core@.
 1.36  18-Nov-2011  christos branches: 1.36.4; 1.36.6;
add a copyin function for sigset so that we can use sigtimedwait1 from
emulations.
 1.35  29-May-2011  christos branches: 1.35.4;
when undoing the sigsuspend setup, either take the signal and allow the
signal path to restore the mask, or restore the mask here.
 1.34  28-May-2011  christos If a signal did not fire, restore the original signal mask for pselect/pollts
using a signal mask. Tested by tron.
 1.33  18-May-2011  christos PR/43625: Mark Davies: Fix pselect(2) to honor the temporary mask. pselect(2)
(and pollts(2)) are similar to sigsuspend(2) in that they temporarily change
the process signal mask and wait for signal delivery. Factor out and share the
code that does this.
 1.32  03-Mar-2011  martin Do not restrict the siginfo a process sends to itself in any way, but
keep restrictions for foreign processes. This is needed to allow raising
of full SIGFPE siginfo from softfloat libraries for example.
 1.31  03-Feb-2011  joerg Explicitly initialize ucontext before calling getmcontext.
 1.30  10-Jan-2011  christos branches: 1.30.2; 1.30.4;
implement sigqueueinfo
 1.29  21-Aug-2010  pgoyette Update the rest of the kernel to conform to the module subsystem's new
locking protocol.
 1.28  01-Jul-2010  rmind Remove pfind() and pgfind(), fix locking in various broken uses of these.
Rename real routines to proc_find() and pgrp_find(), remove PFIND_* flags
and have consistent behaviour. Provide proc_find_raw() for special cases.
Fix memory leak in sysctl_proc_corename().

COMPAT_LINUX: rework ptrace() locking, minimise differences between
different versions per-arch.

Note: while this change adds some formal cosmetics for COMPAT_DARWIN and
COMPAT_IRIX - locking there is utterly broken (for ages).

Fixes PR/43176.
 1.27  20-May-2010  drochner fix sigwaitinfo/sigtimedwait:
-allow NULL "info" pointer
-return signal number
 1.26  19-Jan-2010  pooka branches: 1.26.2; 1.26.4;
Get rid of last "easy" kernel symbols starting with __:
__assert -> kern_assert
__sigtimedwait1 -> sigtimedwait1
__wdstart -> wdstart1

The rest are MD and/or shared with userspace, so they will require
a little more involvement than what is available for this quick
"ride the 5.99.24 bump" action.
 1.25  20-Dec-2009  rmind signal(9) code: add some comments, improve/fix wrong ones. While here, kill
trailing whitespaces, wrap long lines, etc. No functional changes intended.
 1.24  19-Dec-2009  rmind sigtimedwait: fix a memory leak (which happens since newlock2 times).
Allocate ksiginfo on stack since it is safe and sigget() assumes that it is
not allocated from pool (pending signals via sigput()/sigget() "mill" should
be dynamically allocated, however). Might be useful to revisit later.

Likely the cause of PR/40750 and indirect cause of PR/39283.
 1.23  29-Mar-2009  christos - use itimespecfix to detect invalid timespecs
- use tstohz instead of mstohz to prevent overflow.
 1.22  29-Mar-2009  christos PR/41094: Matteo Beccati: sigtimedwait returns EAGAIN instead of EINVAL if
timeout is invalid
 1.21  11-Jan-2009  christos branches: 1.21.2;
merge christos-time_t
 1.20  25-Nov-2008  ad sigaction1: we need to remember if the sigcontext method may be useable,
because libc can use it even if siginfo is available.

Changes are needed in libc to stop this being a performance penalty but
they will come later.
 1.19  19-Nov-2008  ad Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime
 1.18  14-Nov-2008  ad - Move some more compat code into sys/compat.
- Split 4.3BSD ifioctl stuff into its own file.
- Remove some ifdefs that include small fragments of vfs compat code
which are difficult to relocate elsewhere.
 1.17  15-Oct-2008  wrstuden branches: 1.17.2; 1.17.4;
Merge wrstuden-revivesa into HEAD.
 1.16  25-Jun-2008  ad branches: 1.16.2;
sigpending1: don't subtract the sigmask (!!).
 1.15  28-Apr-2008  martin branches: 1.15.2; 1.15.4;
Remove clause 3 and 4 from TNF licenses
 1.14  24-Apr-2008  ad branches: 1.14.2;
Merge proc::p_mutex and proc::p_smutex into a single adaptive mutex, since
we no longer need to guard against access from hardware interrupt handlers.

Additionally, if cloning a process with CLONE_SIGHAND, arrange to have the
child process share the parent's lock so that signal state may be kept in
sync. Partially addresses PR kern/37437.
 1.13  24-Apr-2008  ad Network protocol interrupts can now block on locks, so merge the globals
proclist_mutex and proclist_lock into a single adaptive mutex (proc_lock).
Implications:

- Inspecting process state requires thread context, so signals can no longer
be sent from a hardware interrupt handler. Signal activity must be
deferred to a soft interrupt or kthread.

- As the proc state locking is simplified, it's now safe to take exit()
and wait() out from under kernel_lock.

- The system spends less time at IPL_SCHED, and there is less lock activity.
 1.12  19-Feb-2008  yamt branches: 1.12.6; 1.12.8; 1.12.10;
sigpause -> sigsuspend in comments.
 1.11  23-Jan-2008  elad Forgot to commit these two as well. Spotted by hannken@.

Adapt to "CAN" removal.
 1.10  02-Jan-2008  ad Merge vmlocking2 to head.
 1.9  20-Dec-2007  dsl Convert all the system call entry points from:
int foo(struct lwp *l, void *v, register_t *retval)
to:
int foo(struct lwp *l, const struct foo_args *uap, register_t *retval)
Fixup compat code to not write into 'uap' and (in some cases) to actually
pass a correctly formatted 'uap' structure with the right name to the
next routine.
A few 'compat' routines that just call standard ones have been deleted.
All the 'compat' code compiles (along with the kernels required to test
build it).
98% done by automated scripts.
 1.8  09-Jul-2007  ad branches: 1.8.8; 1.8.14; 1.8.16; 1.8.20;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.7  09-Mar-2007  ad branches: 1.7.2; 1.7.4;
- Make the proclist_lock a mutex. The write:read ratio is unfavourable,
and mutexes are cheaper use than RW locks.
- LOCK_ASSERT -> KASSERT in some places.
- Hold proclist_lock/kernel_lock longer in a couple of places.
 1.6  27-Feb-2007  ad Further avoid unnecessary trips through lwp_userret()/issignal().
 1.5  22-Feb-2007  thorpej branches: 1.5.2;
TRUE -> true, FALSE -> false
 1.4  17-Feb-2007  pavel Change the process/lwp flags seen by userland via sysctl back to the
P_*/L_* naming convention, and rename the in-kernel flags to avoid
conflict. (P_ -> PK_, L_ -> LW_ ). Add back the (now unused) LSDEAD
constant.

Restores source compatibility with pre-newlock2 tools like ps or top.

Reviewed by Andrew Doran.
 1.3  10-Feb-2007  ad branches: 1.3.2;
A quick hack to get things building again: put back the SA system calls
with no arguments, and alias them to sys_nosys. To be revisited.
 1.2  09-Feb-2007  ad Merge newlock2 to head.
 1.1  21-Oct-2006  ad branches: 1.1.2;
file sys_sig.c was initially added on branch newlock2.
 1.1.2.13  06-Feb-2007  yamt __sigtimedwait1: fix use-after-free.
 1.1.2.12  05-Feb-2007  ad - When clearing signals dequeue siginfo first and free later, once
outside the lock permiter.
- Push kernel_lock back in a a couple of places.
- Adjust limcopy() to be MP safe (this needs redoing).
- Fix a couple of bugs noticed along the way.
- Catch up with condvar changes.
 1.1.2.11  04-Feb-2007  ad Fix a comment.
 1.1.2.10  04-Feb-2007  ad o sigtimedwait1(): don't allocate the waitset every time. This gets
called often enough to justify stashing it in struct lwp.
o Push kernel_lock back in a few places.
 1.1.2.9  30-Jan-2007  ad Remove support for SA. Ok core@.
 1.1.2.8  28-Jan-2007  ad - Remove the last use of mtsleep()
- sched_pause() -> kpause()
 1.1.2.7  27-Jan-2007  ad - Job control shouldn't affect LWPs sleeping interruptably.
- Remove another use of mtsleep().
 1.1.2.6  16-Jan-2007  ad Fix a race between sigtimedwait()/sigunwait().
 1.1.2.5  29-Dec-2006  ad Checkpoint work in progress.
 1.1.2.4  18-Nov-2006  ad Sync with head.
 1.1.2.3  17-Nov-2006  ad Checkpoint work in progress.
 1.1.2.2  24-Oct-2006  ad - Redo LWP locking slightly and fix some races.
- Fix some locking botches.
- Make signal mask / stack per-proc for SA processes.
- Add _lwp_kill().
 1.1.2.1  21-Oct-2006  ad - Split core dump, LWP syscalls and signal syscalls into their own files.
- Checkpoint work in progress on locking & per-LWP signals.
 1.3.2.2  12-Mar-2007  rmind Sync with HEAD.
 1.3.2.1  27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.5.2.6  27-Feb-2008  yamt sync with head.
 1.5.2.5  04-Feb-2008  yamt sync with head.
 1.5.2.4  21-Jan-2008  yamt sync with head
 1.5.2.3  03-Sep-2007  yamt sync with head.
 1.5.2.2  26-Feb-2007  yamt sync with head.
 1.5.2.1  22-Feb-2007  yamt file sys_sig.c was added on branch yamt-lazymbuf on 2007-02-26 09:11:17 +0000
 1.7.4.1  11-Jul-2007  mjf Sync with head.
 1.7.2.2  21-Mar-2007  ad GC the simplelock/spinlock debugging stuff.
 1.7.2.1  13-Mar-2007  ad Pull in the initial set of changes for the vmlocking branch.
 1.8.20.2  23-Jan-2008  bouyer Sync with HEAD.
 1.8.20.1  02-Jan-2008  bouyer Sync with HEAD
 1.8.16.2  26-Dec-2007  ad Sync with head.
 1.8.16.1  04-Dec-2007  ad Pull the vmlocking changes into a new branch.
 1.8.14.1  18-Feb-2008  mjf Sync with HEAD.
 1.8.8.2  23-Mar-2008  matt sync with HEAD
 1.8.8.1  09-Jan-2008  matt sync with HEAD
 1.12.10.1  18-May-2008  yamt sync with head.
 1.12.8.4  27-Dec-2008  christos merge with head.
 1.12.8.3  20-Nov-2008  christos merge with head.
 1.12.8.2  01-Nov-2008  christos Sync with head.
 1.12.8.1  29-Mar-2008  christos Welcome to the time_t=long long dev_t=uint64_t branch.
 1.12.6.3  17-Jan-2009  mjf Sync with HEAD.
 1.12.6.2  29-Jun-2008  mjf Sync with HEAD.
 1.12.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.14.2.5  09-Oct-2010  yamt sync with head
 1.14.2.4  11-Aug-2010  yamt sync with head.
 1.14.2.3  11-Mar-2010  yamt sync with head
 1.14.2.2  04-May-2009  yamt sync with head.
 1.14.2.1  16-May-2008  yamt sync with head.
 1.15.4.1  27-Jun-2008  simonb Sync with head.
 1.15.2.5  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.15.2.4  28-May-2008  wrstuden Adjust to how we're handling l_mask for SA processes.
 1.15.2.3  23-May-2008  wrstuden SA processes can only have one sigwaiter.
 1.15.2.2  14-May-2008  wrstuden Per discussion with ad at n dot o, revert signal mask handling
changes.

The l_sigstk changes are most likely totally un-needed as SA will
never use a signal stack - we send an upcall (or will as other
diffs are brought in).

The l_sigmask changes were too controvertial. In all honesty, I
think it's probably best to revert them. The main reason they were
there is the fact that in an SA process, we don't mask signals per
kernel thread, we mask them per user thread. In the kernel, we want
them all to get turned into upcalls. Thus the normal state of
l_sigmask in an SA process is for it to always be empty.

While we are in the process of delivering a signal, we want to
temporarily mask a signal (so we don't recursively exhaust our
upcall stacks). However signal delivery is rare (important, but
rare), and delivering back-to-back signals is even rarer. So rather
than cause every user of a signal mask to be prepared for this very
rare case, we will just add a second check later in the signal
delivery code. Said change is not in this diff.

This also un-compensates all of our compatability code for dealing
with SA. SA is a NetBSD-specific thing, so there's no need for
Irix, Linux, Solaris, SVR4 and so on to cope with it.

As previously, everything other than kern_sa.c compiles in i386
GENERIC as of this checkin. I will switch to ALL soon for compile
testing.
 1.15.2.1  10-May-2008  wrstuden Initial checkin of re-adding SA. Everything except kern_sa.c
compiles in GENERIC for i386. This is still a work-in-progress, but
this checkin covers most of the mechanical work (changing signalling
to be able to accomidate SA's process-wide signalling and re-adding
includes of sys/sa.h and savar.h). Subsequent changes will be much
more interesting.

Also, kern_sa.c has received partial cleanup. There's still more
to do, though.
 1.16.2.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.16.2.1  19-Oct-2008  haad Sync with HEAD.
 1.17.4.4  16-Feb-2011  bouyer Pull up following revision(s) (requested by joerg in ticket #1556):
sys/compat/irix/irix_signal.c: revision 1.56
sys/compat/svr4/svr4_signal.c: revision 1.65
sys/compat/netbsd32/netbsd32_signal.c: revision 1.35
sys/kern/sys_sig.c: revision 1.31
Explicitly initialize ucontext before calling getmcontext.
 1.17.4.3  07-Jan-2010  snj Pull up following revision(s) (requested by rmind in ticket #1199):
sys/kern/sys_sig.c: revision 1.24
sigtimedwait: fix a memory leak (which happens since newlock2 times).
Allocate ksiginfo on stack since it is safe and sigget() assumes that it is
not allocated from pool (pending signals via sigput()/sigget() "mill" should
be dynamically allocated, however). Might be useful to revisit later.
Likely the cause of PR/40750 and indirect cause of PR/39283.
 1.17.4.2  01-Apr-2009  snj branches: 1.17.4.2.2; 1.17.4.2.4;
Pull up following revision(s) (requested by christos in ticket #638):
sys/kern/sys_sig.c: revision 1.23
- use itimespecfix to detect invalid timespecs
- use tstohz instead of mstohz to prevent overflow.
 1.17.4.1  01-Apr-2009  snj Pull up following revision(s) (requested by rmind in ticket #632):
sys/kern/sys_sig.c: revision 1.22
PR/41094: Matteo Beccati: sigtimedwait returns EAGAIN instead of EINVAL if
timeout is invalid
 1.17.4.2.4.1  21-Apr-2010  matt sync to netbsd-5
 1.17.4.2.2.1  07-Jan-2010  snj Pull up following revision(s) (requested by rmind in ticket #1199):
sys/kern/sys_sig.c: revision 1.24
sigtimedwait: fix a memory leak (which happens since newlock2 times).
Allocate ksiginfo on stack since it is safe and sigget() assumes that it is
not allocated from pool (pending signals via sigput()/sigget() "mill" should
be dynamically allocated, however). Might be useful to revisit later.
Likely the cause of PR/40750 and indirect cause of PR/39283.
 1.17.2.2  28-Apr-2009  skrll Sync with HEAD.
 1.17.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.21.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.26.4.4  31-May-2011  rmind sync with head
 1.26.4.3  05-Mar-2011  rmind sync with head
 1.26.4.2  03-Jul-2010  rmind sync with head
 1.26.4.1  30-May-2010  rmind sync with head
 1.26.2.2  22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.26.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.30.4.2  05-Mar-2011  bouyer Sync with HEAD
 1.30.4.1  08-Feb-2011  bouyer Sync with HEAD
 1.30.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.35.4.4  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.35.4.3  23-Jan-2013  yamt sync with head
 1.35.4.2  30-Oct-2012  yamt sync with head
 1.35.4.1  17-Apr-2012  yamt sync with head
 1.36.6.1  21-Jul-2012  riz Pull up following revision(s) (requested by christos in ticket #430):
sys/kern/sys_sig.c: revision 1.38
From Roger Pau Monne: kill(2) called for a zombie process should return 0,
according to:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html
 1.36.4.1  24-Feb-2012  mrg sync to -current.
 1.38.2.4  03-Dec-2017  jdolecek update from HEAD
 1.38.2.3  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.38.2.2  23-Jun-2013  tls resync from head
 1.38.2.1  25-Feb-2013  tls resync with head
 1.41.6.1  18-May-2014  rmind sync with head
 1.42.10.1  12-Dec-2018  martin Pull up following revision(s) (requested by maxv in ticket #1664):

sys/kern/sys_sig.c: revision 1.47

Fix kernel info leak, 4 bytes of padding in struct _ksiginfo. Maybe we
should just set _pad to zero on LP64?

+ Possible info leak: [len=40, leaked=4]
| #0 0xffffffff80baf397 in kleak_copyout
| #1 0xffffffff80bda817 in sigtimedwait1
| #2 0xffffffff80bdab95 in sys_____sigtimedwait50
| #3 0xffffffff80259c42 in syscall
 1.42.6.1  12-Dec-2018  martin Pull up following revision(s) (requested by maxv in ticket #1664):

sys/kern/sys_sig.c: revision 1.47

Fix kernel info leak, 4 bytes of padding in struct _ksiginfo. Maybe we
should just set _pad to zero on LP64?

+ Possible info leak: [len=40, leaked=4]
| #0 0xffffffff80baf397 in kleak_copyout
| #1 0xffffffff80bda817 in sigtimedwait1
| #2 0xffffffff80bdab95 in sys_____sigtimedwait50
| #3 0xffffffff80259c42 in syscall
 1.42.4.1  12-Dec-2018  martin Pull up following revision(s) (requested by maxv in ticket #1664):

sys/kern/sys_sig.c: revision 1.47

Fix kernel info leak, 4 bytes of padding in struct _ksiginfo. Maybe we
should just set _pad to zero on LP64?

+ Possible info leak: [len=40, leaked=4]
| #0 0xffffffff80baf397 in kleak_copyout
| #1 0xffffffff80bda817 in sigtimedwait1
| #2 0xffffffff80bdab95 in sys_____sigtimedwait50
| #3 0xffffffff80259c42 in syscall
 1.43.2.3  05-Oct-2016  skrll Sync with HEAD
 1.43.2.2  27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.43.2.1  22-Sep-2015  skrll Sync with HEAD
 1.45.2.1  06-Aug-2016  pgoyette Sync with HEAD
 1.46.16.2  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.46.16.1  10-Jun-2019  christos Sync with HEAD
 1.46.14.1  26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.46.8.1  12-Dec-2018  martin Pull up following revision(s) (requested by maxv in ticket #1134):

sys/kern/sys_sig.c: revision 1.47

Fix kernel info leak, 4 bytes of padding in struct _ksiginfo. Maybe we
should just set _pad to zero on LP64?

+ Possible info leak: [len=40, leaked=4]
| #0 0xffffffff80baf397 in kleak_copyout
| #1 0xffffffff80bda817 in sigtimedwait1
| #2 0xffffffff80bdab95 in sys_____sigtimedwait50
| #3 0xffffffff80259c42 in syscall
 1.47.4.4  07-Aug-2024  martin Pull up following revision(s) (requested by kre in ticket #1859):

sys/kern/kern_proc.c: revision 1.276 (via patch)
sys/kern/kern_ktrace.c: revision 1.185 (via patch)
sys/kern/sys_sig.c: revision 1.58 (via patch)
sys/kern/kern_descrip.c: revision 1.263 (via patch)
lib/libc/compat-43/killpg.c: revision 1.10
sys/kern/tty.c: revision 1.313 (via patch)
tests/lib/libc/sys/t_kill.c: revision 1.2

PR kern/58425 -- Disallow INT_MIN as a (negative) pid arg.
Since -INT_MIN is undefined, and to point of negative pid args is
to negate them, and use the result as a pgrp id instead, we need
to avoid accidentally negating INT_MIN.

Since pid_t is just an integral type, of unspecified width, when
testing pid_t value test for <= INT_MIN (or > INT_MIN sometimes)
rather than == INT_MIN. When testing int values, just == INT_MIN
is all that is needed, < INT_MIN cannot occur.

tests/lib/libc/sys/t_kill: Test kill(INT_MIN, ...) fails with ESRCH.
PR kern/58425
 1.47.4.3  11-Nov-2019  martin Pull up following revision(s) (requested by pgoyette in ticket #413):

sys/kern/kern_core.c: revision 1.27 (patch)
sys/kern/kern_sig.c: revision 1.377 (patch)
sys/kern/kern_sig.c: revision 1.378 (patch)
sys/kern/sys_sig.c: revision 1.50
sys/kern/sys_ptrace_common.c: revision 1.70
sys/kern/compat_stub.c: revision 1.16
sys/compat/common/kern_sig_16.c: revision 1.4
sys/kern/compat_stub.c: revision 1.17
sys/sys/compat_stub.h: revision 1.20
sys/sys/signalvar.h: revision 1.98
sys/sys/compat_stub.h: revision 1.21
sys/sys/signalvar.h: revision 1.99

Convert the sendsig_sigcontext_16 function pointer to use the new
compat_hook mechanism.
XXX Despite being a kernel<-->module abi change, this should be
XXX pulled up to -9

-

Convert the coredump_vec modular function pointer to use the new
compat_hook mechanism.
XXX Should be pulled up to -9 despite the kernel <--> module ABI
XXX change.
 1.47.4.2  10-Nov-2019  martin Pull up following revision(s) (requested by pgoyette in ticket #412):

sys/kern/sys_sig.c: revision 1.49

If we need to handle old-version signals, load the version-specific
"compat_16" module. There is no longer a monolithic "compat" module!
XXX pullup-9 needed
 1.47.4.1  21-Oct-2019  martin Pull up following revision(s) (requested by maxv in ticket #353):

sys/kern/sys_sig.c: revision 1.48
sys/sys/signalvar.h: revision 1.94
sys/sys/signalvar.h: revision 1.95

Introduce sigaction_copy(), to copy sigaction structures without padding,
and use it in sigaction1(). This is to fix info leaks all at once in the
signal functions.

-

Fix libkvm build.
 1.56.4.1  07-Aug-2024  martin Pull up following revision(s) (requested by kre in ticket #773):

sys/kern/kern_proc.c: revision 1.276
sys/kern/kern_ktrace.c: revision 1.185
sys/kern/sys_sig.c: revision 1.58
sys/kern/kern_descrip.c: revision 1.263
lib/libc/compat-43/killpg.c: revision 1.10
sys/kern/tty.c: revision 1.313
tests/lib/libc/sys/t_kill.c: revision 1.2

PR kern/58425 -- Disallow INT_MIN as a (negative) pid arg.

Since -INT_MIN is undefined, and to point of negative pid args is
to negate them, and use the result as a pgrp id instead, we need
to avoid accidentally negating INT_MIN.

Since pid_t is just an integral type, of unspecified width, when
testing pid_t value test for <= INT_MIN (or > INT_MIN sometimes)
rather than == INT_MIN. When testing int values, just == INT_MIN
is all that is needed, < INT_MIN cannot occur.

tests/lib/libc/sys/t_kill: Test kill(INT_MIN, ...) fails with ESRCH.
PR kern/58425
 1.57.6.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed