| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
Implement the following checks on freed memory in the bucket path:
- Slab membership
- Alignment
- Duplicate free
This previously was only done if we skipped the buckets. This code will slow
down INVARIANTS a bit, but it is smp safe. The checks were moved out of the
normal path and into hooks supplied in uma_dbg.
|
|
|
|
|
|
|
|
|
|
|
| |
Turn the sigio sx into a mutex.
Sigio lock is really only needed to protect interrupts from dereferencing
the sigio pointer in an object when the sigio itself is being destroyed.
In order to do this in the most unintrusive manner change pgsigio's
sigio * argument into a **, that way we can lock internally to the
function.
|
|
|
|
| |
whitespace and update a comment.
|
|
|
|
| |
other platforms.
|
|
|
|
| |
vnode_if.awk.
|
|
|
|
| |
while longer.
|
|
|
|
|
|
|
| |
an issue on the Alpha platform found by jeff@.)
o Simplify vm_page_lookup().
Reviewed by: jhb
|
|
|
|
| |
Many thanks to: bde
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
loading breakage'). The patch fixes serious issues with the VFS
operations vector array which results in a crash when a filesystem module
adding a new VOP is loaded into the kernel. Basically what was happening
before was that the old operations vector was being freed and a new one
allocated. The original MALLOC code tended to reuse the same address
for the case and so the bug did not rear its ugly head until the new memory
subsystem was emplaced.
This patch replaces the temporary workaround Dave O'Brien comitted in 1.58.
The patch is clean enough that I intend to MFC it to stable at some point.
Submitted by: Alexander Kabaev <ak03@gte.com>
MFC after: 1 week
|
|
|
|
|
|
|
|
|
|
|
| |
0xdeadc0de and then check for it just before memory is handed off as part
of a new request. This will catch any post free/pre alloc modification of
memory, as well as introduce errors for anything that tries to dereference
it as a pointer.
This code takes the form of special init, fini, ctor and dtor routines that
are specificly used by malloc. It is in a seperate file because additional
debugging aids will want to live here as well.
|
|
|
|
|
|
| |
uma_zalloc and friends. Remove this functionality from the malloc wrapper.
Document this change in uma.h and adjust variable names in uma_core.
|
|
|
|
|
|
|
|
|
|
| |
Requested by: bde
Since locking sigio_lock is usually followed by calling pgsigio(),
move the declaration of sigio_lock and the definitions of SIGIO_*() to
sys/signalvar.h.
While I am here, sort include files alphabetically, where possible.
|
|
|
|
| |
Submitted by: green
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
malloc profiling) also modified the set of pre-defined buckets for the
memory allocator. For reasons unknown to me, this resulted in extensive
memory corruption in the kernel, in particular on SMP boxes, so I'm
committing this work-around until Jeff gets a chance to debug it
properly. David Wolfskill pointed me at this commit as the one that
might be a problem; I've been running this code on two dual-processor
burn-in boxes for about 12 hours now, and the rate of panics due to
memory corruption has dropped to zero (from one every five minutes).
Hopefully not treading on the toes of: jeff
|
|
|
|
|
| |
Approved by: phk
MFC after: 2 weeks
|
|
|
|
| |
Submitted by: bde
|
|
|
|
| |
Renovate comments.
|
| |
|
|
|
|
|
|
|
| |
SIGCHLD handler is SIG_IGN. This is a reimplementation of the
problematic revision 1.131 of kern_exit.c. To avoid accessing process
UPAGES, we set a new procsig flag when the SIGCHLD handler is SIG_IGN
and use that instead.
|
|
|
|
|
|
|
|
|
| |
Otherwise we fall back to using the static hints the next time around.
We still have the leftover fallback code there which meant that we skipped
the use_hints checking on the second and subsequent calls. Also, be a bit
more careful about walking off the end of the envp array.
I've extracted this from a larger diff. I hope I didn't miss anything...
|
|
|
|
| |
Obtained from: mux
|
|
|
|
|
| |
element in the structure pointed to by vp->v_data; the vnode lock
is now within the vnode structure itself.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
of a socket. This avoids lock order reversal caused by locking a
process in pgsigio().
sowakeup() and the callers of it (sowwakeup, soisconnected, etc.) now
require sigio_lock to be locked. Provide sowwakeup_locked(),
soisconnected_locked(), and so on in case where we have to modify a
socket and wake up a process atomically.
|
|
|
|
|
|
|
| |
Add magic date no explanation.
Add a delta which was lost in transit yesterday which prevented
other timecounters from actually being used.
|
| |
|
| |
|
|
|
|
| |
of the FOREACH loop to silence GCC 3.
|
|
|
|
| |
<sys/endian.h>. This puts us in line with NetBSD and OpenBSD.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
by other bits of code, split struct timecounter into two.
struct timecounter contains just the bits which pertains to the hardware
counter and the reading of it.
struct timehands (as in "the hands on a clock") contains all the ugly bit
fidling stuff. Statically compile ten timehands.
This commit is the functional part. A later cosmetic patch will rename
various variables and fieldnames.
|
|
|
|
| |
really need to know the gory details.
|
| |
|
|
|
|
|
|
|
|
|
| |
timeout loop.
Limit the rate at which we wind the timecounters to approx 1000 Hz.
This limits the precision of the get{bin,nano,micro}[up]time(9)
functions to roughly a millisecond.
|
|
|
|
| |
functions missing in the complete 12 function complement.
|
|
|
|
| |
the rest of this file.
|
|
|
|
|
|
| |
timecounter will be used starting at the next second, which is
good enough for sysctl purposes. If better adjustment is needed
the NTP PLL should be used.
|
|
|
|
|
|
|
|
| |
if there's a filesystem present.
rootdev can be NODEV in the NFS-mounted root scenario.
Discussed with: Harti Brandt <brandt@fokus.gmd.de>, iedowse
|
|
|
|
|
|
|
|
|
| |
LRU fashion when the listen queue fills up. Previously, there was
no mechanism to kick out old sockets, leading to an easy DoS of
daemons using accept filtering.
Reviewed by: alfred
MFC after: 3 days
|
|
|
|
|
|
| |
the MUTEX_PROFILING + WITNESS + !WITNESS_SKIPSPIN case.
Submitted by: Hiten Pandya <hiten@uk.FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- malformed environment strings (ones without an '=') were not rejected.
There shouldn't be any of these, but when the static environment is
empty it always begins with one of these; this one should be considered
as the terminator after the end of the environment, but it isn't.
- the comparison of the name being looked up with the name in the
environment was fuzzy -- only the characters up to the length of the
latter were compared, so _getenv_static("foobar") matched "foo=..."
in the environment and everything matched "" in the empty environment.
MFC after: 3 days
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
#!bin/sh
# Original version of this by Michael Reifenberger
# <root@nihil.plaut.de>.
mdconfig -d -u 11 >/dev/null 2>&1
dd if=/dev/zero of=zz bs=1m count=1
while :
do
mdconfig -a -t vnode -f zz -u 11
fdisk -f - -iv /dev/md11 <<EOF1
g c1 h64 s32
p 1 165 0 2048
a 1
EOF1
mdconfig -d -u 11
done
Garbage pointers in __si_u were not cleared by destroy_dev(). Not
clearing si_disk made the above fatal because the disk layer uses
si_disk as a flag to indicate that the dev_t has been completely
initialized. disk_destroy() clears si_disk for the parent dev_t
but doesn't get called for children.
Not fixed:
- setting the undocumented sysctl debug.free_devt should cause more
complete destruction of the dev_t including clearing of __si_u, but
actually causes the above to panic a little earlier.
- the loop leaks 10 memory allocations per iteration (4 DEVFS, 2 devbuf
and 4 dev_t).
Reviewed by: timeout by MAINTAINER after 3 months
|
|
|
|
|
|
|
|
|
|
|
|
| |
the symbol index defined by the relocation. The elf_lookup() support
function is to be used by elf_reloc() when symbol lookups need to be
done. The elf_lookup() function operates on the symbol index and
will do a symbol name based lookup when such is required, otherwise
it uses the symbol index directly. This solves the problem seen on
ia64 where the symbol hash table does not contain local symbols and
a symbol name based lookup would fail for those symbols.
Don't pass the symbol name to elf_reloc(), as it isn't used any more.
|
|
|
|
| |
Suggested by: jhb
|
|
|
|
|
|
| |
syncache went in.
MFC after: 3 days
|
|
|
|
|
| |
Submitted by: Jennifer Yang (yangjihui@yahoo.com)
Reviewed by: jake & jhb in principle
|
|
|
|
| |
Should be improved by: jeff
|
| |
|
|
|
|
|
|
|
| |
to VOP_GETEXTATTR(). This simplifies code flow when inserting MAC hooks.
Obtained from: TrustedBSD Project
Sponsored by: DARPA, NAI Labs
|
| |
|
|
|
|
|
| |
Also change one case of blatant __progname abuse (several more remain)
This commit does not touch anything in src/{contrib,crypto,gnu}/.
|