Commit Graph

7509 Commits

Author SHA1 Message Date
oki
e3731ae5b2 Wait for freeing mbuf cluster in sosend() causes freeze network stack.
Don't wait for it.
problem was found by iij seil team.
it is similar to OpenBSD uipc_socket.c rev.1.72.
2010-10-14 03:07:51 +00:00
mrg
3eca36b665 add some (uint64_t) casts so avoid 32 bit overflows. this fixes my
3TB disk with 4KB sectors and disklabel (which looks like it would
work upto 16TB.)

idea from mlelstv@.
2010-10-14 00:47:16 +00:00
chs
79f3dfff82 when we use a fake data section, make sure that the start is page-aligned. 2010-10-07 02:14:02 +00:00
matt
19e6c76b2d Rename rb.h to rbtree.h, as it is more appropriate (c.f. ptree.h). Also
helps find code that hasn't been updated to use the new rbtree API.
2010-09-25 01:42:38 +00:00
rmind
879d5dfb5e Fixes/improvements to RB-tree implementation:
1. Fix inverted node order, so that negative value from comparison operator
   would represent lower (left) node, and positive - higher (right) node.
2. Add an argument (i.e. "context"), passed to comparison operators.
3. Change rb_tree_insert_node() to return a node - either inserted one or
   already existing one.
4. Amend the interface to manipulate the actual object, instead of the
   rb_node (in a similar way as Patricia-tree interface does).
5. Update all RB-tree users accordingly.

XXX: Perhaps rename rb.h to rbtree.h, since cleaning-up..

1-3 address the PR/43488 by Jeremy Huddleston.

Passes RB-tree regression tests.
Reviewed by: matt@, christos@
2010-09-24 22:51:50 +00:00
chs
38b9dc3505 implement O_DIRECTORY as standardized in POSIX-2008,
for both native and linux emulations.
this fixes the rest of PR 43695.
2010-09-21 19:26:18 +00:00
drochner
29d1b2938d improve "const" consistency 2010-09-12 16:06:08 +00:00
chs
590b90699b always supply an auxiliary vector for linux ELF processes.
static executables (such as newer versions of /sbin/ldconfig)
require this to work properly.  since static executables
also don't have a PT_PHDR entry, use the same heuristic as
linux does to provide a value for AT_PHDR in this case.
2010-09-11 20:49:28 +00:00
drochner
51b3e42a8d make list traversing in knote() safe against removal of the entry
while the loop body is executed -- at least in the EVFILT_PROC / exit
case a race condition exists which can cause this
fixes a panic triggered eg by tests/kernel/kqueue/proc1
2010-09-10 10:23:46 +00:00
drochner
3ebe07497e fix two bugs reported by Ryo Shimizu:
-wrong initialization reported in a followup to PR bin/43336
 (looks harmless because it applies to zero-initialized memory, so
 LIST_INIT() is a no-op)
-wrong loop count in reply misses a hash bucket (PR kern/43827)
 (this was introduced by a post-netbsd-5 change, so it isn't related
 to the PR above)
2010-09-10 10:14:55 +00:00
joerg
b5e51c26bb Remember the end of the last text segment and set up a fake data segment
if size 0 and starting after the text segments, if no data segment was
found. Unbreaks sbrk on platforms where all loaded segments are
executable (PR 43817). The cast of executable segments after data
segments is left out for now.
2010-09-07 21:32:03 +00:00
pooka
0d2a7de3b6 getcwd for rump 2010-09-07 17:10:08 +00:00
pooka
a50c905497 rump umask 2010-09-06 20:00:09 +00:00
dyoung
c3438d26de Cosmetic: remove unnecessary parenthesization in return statements.
Don't "test truth" of ints, but compare with 0, instead.

The generated assembly is the same before & after this change.
2010-09-05 18:03:37 +00:00
pooka
0af65acdc5 Actually, the comment probably meant "would be nice to KASSERT here,
but can't".  So turn it into a KASSERT now that it's possible.
2010-09-01 15:15:18 +00:00
pooka
8411fe4cea Remove XXX comment. I'm not sure what it precisely means, but I'm
guessing it's from a time when rump used filedesc0 for everything
(and that isn't true anymore).
2010-09-01 15:12:16 +00:00
pooka
72a4517ea3 regen: rump syscalls for kern_prot interfaces 2010-08-30 10:34:51 +00:00
pooka
16e1cb0b60 RUMP syscalls for kern_prot.c interfaces 2010-08-30 10:32:54 +00:00
pooka
195f9ac9fd remove trailing empty line. no useful change. 2010-08-30 10:30:01 +00:00
pooka
9a611a11e0 Empty commit to show makesyscalls.sh rev 1.99 didn't change anything (yet). 2010-08-30 10:24:42 +00:00
pooka
5c6beee9f6 Use the generally more useful funcalias for rump syscalls. 2010-08-30 10:24:04 +00:00
pooka
aeb7e802ec I'm not even going to describe this change. I'll just say that
churn creates interesting code.

Fixes open(O_CREAT|O_TRUNC) on at least tmpfs and nfs to not fail
with ENOENT due to a racy removal of the newly created file.

Caught, as most bugs these days are, by a test run.
2010-08-25 13:51:50 +00:00
christos
6a6858c912 Fix issues with stack allocation and pax aslr:
- since the size is unsigned, don't check just that it is > 0, but limit
  it to the MAXSSIZ
- if the stack size is reduced because of aslr, make sure we reduce the
  actual allocation by the same size so that the size does not wrap around.
NB: Must be pulled up to 5.x!
2010-08-23 20:53:08 +00:00
pgoyette
23d5409e7e Update the rest of the kernel to conform to the module subsystem's new
locking protocol.
2010-08-21 13:19:39 +00:00
pgoyette
4a743ad47d Define a set of new kernel locking primitives to implement the recursive
kernconfig_mutex.  Update module subsystem to use this mutex rather than
its own internal (non-recursive) mutex.  Make module_autoload() do its
own locking to be consistent with the rest of the module_xxx() calls.
Update module(9) man page appropriately.

As discussed on tech-kern over the last few weeks.

Welcome to NetBSD 5.99.39 !
2010-08-21 13:17:31 +00:00
joerg
e84862bd9b Allow ELF objects with more than two PT_LOAD sections. Go creates such
binaries by default with separate sections for executable, writeable
data and constants. Use the same heuristic as FreeBSD to match up the
text and data segment assumptions.
2010-08-20 14:59:53 +00:00
hannken
863afee91a Now that ffs on disk inodes get freed in the reclaim routine it is no longer
necessary for vget() to handle VI_INACTNOW as a special case.  Remove this
check and its support in vrelel().

Getting another reference while the freelist is locked is an error.  Replace
the check with a KASSERT.
2010-08-17 13:17:47 +00:00
jruoho
795224299a From jmcneill@: call config_deferred(9) in rescan_with_cfdata(). 2010-08-16 17:29:52 +00:00
pgoyette
bf43b300a1 Keep condvar wmesg within 8 char limit 2010-08-11 12:04:49 +00:00
pgoyette
8be3483a20 Keep condvar wmesg within 8-char limit 2010-08-11 11:46:32 +00:00
jruoho
72795172e5 Like with mqueue(3), create and remove the aio(3) sysctl nodes dynamically. 2010-08-06 18:36:09 +00:00
pooka
5777f63fd9 Remove overzealous KASSERT: the refcount can be non-zero if another
thread attempts to use a non-open file descriptor.  from ad

fixes PR kern/43694
2010-08-04 14:25:16 +00:00
hannken
c84e81cad1 Add vm page flag PG_MARKER and use it to tag dummy marker pages
in genfs_do_putpages() and uao_put().
Use 'v_uobj.uo_npages' to check for an empty memq.
Put some assertions where these marker pages may not appear.

Ok: YAMAMOTO Takashi <yamt@netbsd.org>
2010-07-29 10:54:50 +00:00
jruoho
c28dcae1e0 Get rid of SYSCTL_SETUP.
We want the sysctl variables also when mqueue(3) is loaded as a module.
2010-07-28 20:49:12 +00:00
hannken
3a7edffde9 ext2fs,ffs: free on disk inodes in the reclaim routine.
Remove now unneeded vnode flag VI_FREEING.

Welcome to 5.99.38.

Ok: Andrew Doran <ad@netbsd.org>
2010-07-28 11:03:47 +00:00
hannken
2ac44efee2 Modify vn_lock():
- Take v_interlock before examining v_iflag
- Must always be called without v_interlock taken,
  LK_INTERLOCK flag is no longer allowed.
2010-07-28 09:30:21 +00:00
jakllsch
359dcd7f55 Use 'z' printf format modifier to print size_t in debug code. 2010-07-27 14:25:23 +00:00
hannken
87506b0c16 When both vget() and vrelel() call vn_lock() we know VI_XLOCK is clear.
No need to use LK_INTERLOCK or LK_RETRY here.
The return value of vn_lock() is already examined here.

Ok: Antti Kantee <pooka@netbsd.org>
2010-07-26 15:22:16 +00:00
hannken
1968478248 Add an assertion: it makes no sense to call vget() with LK_RETRY. 2010-07-25 10:23:40 +00:00
hannken
fb62bef947 Make holding v_interlock mandatory for callers of vget().
Announced some time ago on tech-kern.
2010-07-21 17:52:09 +00:00
hannken
1664eae7f3 Using vfinddev() leads to vnode races as it returns an unreferenced
vnode that may disappear before the caller has a chance to reference it.

Reference the vnode while the specfs cache is locked.

Welcome to 5.99.37.

No objections on tech-kern.
2010-07-21 09:06:37 +00:00
hannken
e698a5d246 Using cache_revlookup() leads to vnode races as it returns an unreferenced
vnode that may disappear before the caller has a chance to reference it.

Reference the vnode while the name cache is locked.

No objections on tech-kern.
2010-07-21 09:01:35 +00:00
pooka
7f9f73897e Include <rump/rump_syscalls_compat.h> from rump_syscalls.h. This
file will contain compat defs which are not autogenerated.
2010-07-19 15:25:47 +00:00
pooka
c99c5d9840 Don't leak kernel stack into userspace. 2010-07-13 15:38:15 +00:00
rmind
25ce398524 sel_setevents: fix error - match event-set, as intended.
Spotted by Enami Tsugutomo.
2010-07-12 11:04:25 +00:00
rmind
6269e5af55 Disable direct select for now, since it still brings problems. 2010-07-11 11:17:58 +00:00
rmind
2903a8dcf1 sel_setevents: fix direct injecting of fd bit for select() case. 2010-07-10 17:04:25 +00:00
rmind
21b26eb64e sel_do_scan: do not bother to assert for SEL_SCANNING state before blocking,
as it might also be SEL_BLOCKING due to spurious wake-ups.  That has no harm.
2010-07-08 23:15:23 +00:00
rmind
ce9dfd6a44 Implement direct select/poll support, currently effective for socket and
pipe subsystems.  Avoids overhead of second selscan() on wake-up, and thus
improves performance on certain workloads (especially when polling on many
file-descriptors).  Also, clean-up sys/fd_set.h header and improve macros.

Welcome to 5.99.36!
2010-07-08 12:23:31 +00:00
chs
33fa5ccbbf many changes for COMPAT_LINUX:
- update the linux syscall table for each platform.
 - support new-style (NPTL) linux pthreads on all platforms.
   clone() with CLONE_THREAD uses 1 process with many LWPs
   instead of separate processes.
 - move the contents of sys__lwp_setprivate() into a new
   lwp_setprivate() and use that everywhere.
 - update linux_release[] and linux32_release[] to "2.6.18".
 - adjust placement of emul fork/exec/exit hooks as needed
   and adjust other emul code to match.
 - convert all struct emul definitions to use named initializers.
 - change the pid allocator to allow multiple pids to refer to the same proc.
 - remove a few fields from struct proc that are no longer needed.
 - disable the non-functional "vdso" code in linux32/amd64,
   glibc works fine without it.
 - fix a race in the futex code where we could miss a wakeup after
   a requeue operation.
 - redo futex locking to be a little more efficient.
2010-07-07 01:30:32 +00:00