| Commit message (Expand) | Author | Age | Files | Lines |
| * | fix signed overflow in ftok | Daniel Sabogal | 2017-08-12 | 1 | -1/+1 |
| * | semctl: fix UB causing crashes on powerpc•••it's UB to fetch variadic args when none are passed, and this caused
real crashes on ppc due to its calling convention, which defines that
for variadic functions aggregate types be passed as pointers.
the assignment caused that pointer to get dereferenced, resulting in
a crash.
| rofl0r | 2014-03-13 | 1 | -4/+8 |
| * | fix inadvertent use of struct in place of union for semun | Rich Felker | 2014-01-08 | 1 | -3/+3 |
| * | fix type of semctl variadic argument•••per POSIX, the variadic argument has type union semun, which may
contain a pointer or int; the type read depends on the command being
issued. this allows the userspace part of the implementation to be
type-correct without requiring special-casing for different commands.
the kernel always expects to receive the argument interpreted as
unsigned long (or equivalently, a pointer), and does its own handling
of extracting the int portion from the representation, as needed.
this change fixes two possible issues: most immediately, reading the
argument as a (signed) long and passing it to the syscall would
perform incorrect sign-extension of pointers on the upcoming x32
target. the other possible issue is that some archs may use different
(user-space) argument-passing convention for unions, preventing va_arg
from correctly obtaining the argument when the type long (or even
unsigned long or void *) is passed to it.
| Rich Felker | 2014-01-08 | 1 | -4/+10 |
| * | fix harmless inconsistency in semtimedop•••this should not matter since the reality is that either all the sysv
sem syscalls are individual syscalls, or all of them are multiplexed
on the SYS_ipc syscall (depending on arch). but best to be consistent
anyway.
| Rich Felker | 2013-11-09 | 1 | -1/+1 |
| * | implement semtimedop•••this is a Linux-specific extension to the sysv semaphore api.
| Rich Felker | 2013-11-09 | 2 | -0/+14 |
| * | prevent shmget from allocating objects that overflow ptrdiff_t•••rather than returning an error, we have to increase the size argument
so high that the kernel will have no choice but to fail. this is
because POSIX only permits the EINVAL error for size errors when a new
shared memory segment would be created; if it already exists, the size
argument must be ignored. unfortunately Linux is non-conforming in
this regard, but I want to keep the code correct in userspace anyway
so that if/when Linux is fixed, the behavior applications see will be
conforming.
| Rich Felker | 2013-06-29 | 1 | -0/+2 |
| * | work around wrong kernel type for sem_nsems member of struct semid_ds•••rejecting invalid values for n is fine even in the case where a new
sem will not be created, since the kernel does its range checks on n
even in this case as well.
by default, the kernel will bound the limit well below USHRT_MAX
anyway, but it's presumably possible that an administrator could
override this limit and break things.
| Rich Felker | 2013-06-28 | 1 | -0/+7 |
| * | fix shmdt syscall calling convention on old archs | Rich Felker | 2012-10-28 | 1 | -1/+1 |
| * | fix remaining IPC_64 issue (shmctl)•••also cleanup cruft related to the issue
| Rich Felker | 2012-09-22 | 2 | -4/+2 |
| * | fix IPC_64 in msgctl too | Rich Felker | 2012-09-22 | 2 | -6/+2 |
| * | fix broken semctl on systems that don't use IPC_64 flag•••not tested on mips and arm; they may still be broken. x86_64 should be
ok now.
| Rich Felker | 2012-09-22 | 1 | -2/+6 |
| * | overhaul pthread cancellation•••this patch improves the correctness, simplicity, and size of
cancellation-related code. modulo any small errors, it should now be
completely conformant, safe, and resource-leak free.
the notion of entering and exiting cancellation-point context has been
completely eliminated and replaced with alternative syscall assembly
code for cancellable syscalls. the assembly is responsible for setting
up execution context information (stack pointer and address of the
syscall instruction) which the cancellation signal handler can use to
determine whether the interrupted code was in a cancellable state.
these changes eliminate race conditions in the previous generation of
cancellation handling code (whereby a cancellation request received
just prior to the syscall would not be processed, leaving the syscall
to block, potentially indefinitely), and remedy an issue where
non-cancellable syscalls made from signal handlers became cancellable
if the signal handler interrupted a cancellation point.
x86_64 asm is untested and may need a second try to get it right.
| Rich Felker | 2011-04-17 | 2 | -12/+4 |
| * | numerous fixes to sysv ipc•••some of these definitions were just plain wrong, others based on
outdated ancient "non-64" versions of the kernel interface.
as much as possible has now been moved out of bits/*
these changes break abi (the old abi for these functions was wrong),
but since they were not working anyway it can hardly matter.
| Rich Felker | 2011-04-13 | 3 | -5/+5 |
| * | consistency: change all remaining syscalls to use SYS_ rather than __NR_ prefix | Rich Felker | 2011-04-06 | 11 | -11/+11 |
| * | fix incorrect (and conflicting on LP64 archs) types for sysv ipc msgq functions | Rich Felker | 2011-04-06 | 1 | -1/+1 |
| * | add sysv ipc message queues (completely untested) | Rich Felker | 2011-04-05 | 4 | -0/+58 |
| * | global cleanup to use the new syscall interface | Rich Felker | 2011-03-20 | 7 | -14/+14 |
| * | fixed missing cast in the non-i386 version of shmat (preparation for ports) | Rich Felker | 2011-02-13 | 1 | -1/+1 |
| * | initial check-in, version 0.5.0 | Rich Felker | 2011-02-12 | 9 | -0/+118 |