8851 Commits

Author SHA1 Message Date
jmg
54d356d5da MFC: kern_event.c v1.97
clear any action flags on the register knote

Approved by:	re (scottl)
2006-04-04 17:31:46 +00:00
jmg
51d5400d46 MFC: kern_event.c v1.96
fix race condition

Approved by:	re (hrs)
2006-04-02 08:22:43 +00:00
sam
00fd49629b backout taskqueue changes
Approved by:	re (scottl)
2006-04-02 00:14:57 +00:00
kris
a6d8ed18f8 MFC r1.89:
- LK_RETRY means nothing when passed to VOP_LOCK.  Call vn_lock instead.
 - Move the vn_lock of the dvp until after we've unbusied the filesystem
   to avoid a LOR with the mount point lock.
 - In the v_mountedhere while loop we acquire a new instance of giant each
   time through without releasing the first.  This would cause us to leak
   Giant.

Sponsored by:   Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-31 07:39:24 +00:00
csjp
7bdd1005e6 MFC 1.144 tty_pty.c
Allow root to open jail PTYs from the host environment. This un-breaks using
utilities like watch(8) (or other programs which use snp(4)) to monitor
behavior within prisons from the host environment. This regression was
introduced when we changed the ioctl(SNPSTTY) to use a file descriptor
instead of a dev_t

Approved by:	re (hrs)
2006-03-30 16:46:56 +00:00
davidxu
b75d026a4e MFC revision 1.232, 1.233, fix thread suspension race.
Approved by: re (kensmith)
2006-03-26 01:29:55 +00:00
sam
87fb33de86 MFC: promote fast ipsec's m_clone routine for public use; it is renamed
m_unshare and the caller can now control how mbufs are allocated

Approved by:	re (hrs)
2006-03-23 23:24:33 +00:00
csjp
f3b5ccdb54 MFC descriptor fixes in hopes of killing the "dup(2) regression on 6.x" show
stopper item on the 6.1-RELEASE TODO list.

Approved by:	re (scottl)
2006-03-23 04:07:01 +00:00
tegge
b93a63cac4 MFC: Let snapshots make a copy of old contents for all buffers taking part
in a cluster instead of just the first buffer.

     Delay buf_start() calls until snapshots have a copy of old content.

     Allow compilation when not using softupdates.

     Remove unused leaked debug function prototype.

PR:		kern/93942
Approved by:	re (kensmith)
2006-03-22 17:54:50 +00:00
tegge
b9a0371626 MFC: Don't call vn_finished_write() if vn_start_write() failed.
Approved by:	re (kensmith)
2006-03-22 17:34:39 +00:00
davidxu
5ee78a5b24 MFC revision 1.258.
Approved by: re (mux)
2006-03-18 23:37:36 +00:00
davidxu
3b744ce278 MFC kern_thread.c revision 1.231
kern_exit.c   revision 1.286

    calcu fix for threaded process.

Approved by: re (mux)
2006-03-18 23:36:21 +00:00
glebius
4ff9bbbe0f MFC 1.21,1.22:
Fix several typos and trim spaces at eol.

  PR:		kern/93759
  Submitted by:	Antoine Brodin <antoine.brodin laposte.net>

Approved by:	re (mux)
2006-03-18 21:55:43 +00:00
jhb
b10d27f0a1 Add a compat API shim for ithread_remove_handler().
Approved by:	re (mux)
2006-03-17 17:32:46 +00:00
rwatson
1cb719ab5e Regenerate.
Approved by:	re (scottl)
2006-03-17 01:47:33 +00:00
rwatson
3d5d8935a4 Provide unconditionally compiled stub implementations of audit system
calls that simply return ENOSYS.  This will allow basic forward
compatibility with userland audit pieces to be committed in the future,
avoiding the "login killed by SIGSYS" problem users of CVS HEAD
experienced when booting older kernels with newer user spaces (an
unsupported but not uncommon situation when debugging problems).

Approved by:	re (scottl)
Obtained from:	TrustedBSD Project
2006-03-17 01:47:06 +00:00
alc
215850cc69 MFC
File                  Revisions
  kern/imgact_aout.c    1.100
  kern/imgact_elf.c     1.167-1.172, 1.175
  kern/imgact_gzip.c    1.55
  vm/vm_extern.h        1.77
  vm/vm_glue.c          1.214

  Use sf_buf_alloc() instead of vm_map_find() on exec_map to create
  the ephemeral mappings that are used as the source for three copy
  operations from kernel space to user space.  There are two reasons
  for making this change: (1) Under heavy load exec_map can fill up
  causing vm_map_find() to fail.  When it fails, the nascent process
  is aborted (SIGABRT).  Whereas, this reimplementation using
  sf_buf_alloc() sleeps.  (2) Although it is possible to sleep on
  vm_map_find()'s failure until address space becomes available (see
  kmem_alloc_wait()), using sf_buf_alloc() is faster.  Furthermore,
  the reimplementation uses a CPU private mapping, avoiding a TLB
  shootdown on multiprocessors.

  The second argument to vm_map_find() should be NULL instead of 0.

  Correct a long-standing problem in elfN_map_insert(): In order to
  copy a page to user space, the user space mapping must allow write
  access.

  Eliminate an unneeded (vm_prot_t) parameter from two functions.
  Eliminate unnecessary uses of a local variable.

  Maintain the vnode lock throughout elfN_load_file() rather than
  releasing it and reacquiring it in vrele().  Consequently, there is
  no reason to increase the reference count on the vm object caching
  the file's pages.

  Eliminate unused parameters to elfN_load_file().

  Maintain the lock on the vnode for most of exec_elfN_imgact().
  Specifically, it is required for the I/O that may be performed by
  elfN_load_section().

  Avoid an obscure deadlock in the a.out, elf, and gzip image
  activators.  Add a comment describing why the deadlock does not
  occur in the common case and how it might occur in less usual
  circumstances.

  Eliminate an unused variable from exec_aout_imgact().

  Avoid a vm object reference leak in a rarely used code path.

  An executable contains at most one PT_INTERP program header.
  Therefore, the loop that searches for it can terminate after it is
  found rather than iterating over the entire set of program headers.

  Eliminate an unneeded initialization.

Approved by: re (mux)
2006-03-16 00:25:32 +00:00
sam
d92cfb93fe MFC: sync taskqueue api with HEAD modulo preserving the calling
convention for taskqueue_create

Reviewed by:	various
Approved by:	re (scottl)
2006-03-14 23:28:30 +00:00
jeff
d5d2e86c35 MFC Revs 1.237, 1.236, 1.234
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:06:44 +00:00
jeff
d4dc0bfa32 MFC Revs 1.409, 1.404, 1.403, 1.402, 1.401
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:06:39 +00:00
jeff
15991fa641 MFC Revs 1.664, 1.661, 1.660, 1.659, 1.658, 1.657
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:06:34 +00:00
jeff
eb115b5c61 MFC Revs 1.218, 1.217, 1.216
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:06:27 +00:00
jeff
ffb6920658 MFC Revs 1.88, 1.86
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:06:22 +00:00
jeff
6bab28a53a MFC Rev 1.128
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:06:17 +00:00
jeff
9a5748c961 MFC Rev 1.104
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:06:14 +00:00
jeff
ea3727c864 MFC Revs 1.503, 1.501, 1.493
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:06:09 +00:00
jeff
e99e58aba2 MFC Rev 1.162
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:06:03 +00:00
jeff
38c064b9bd MFC Rev 1.177
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:05:54 +00:00
jeff
b46ca49877 MFC Revs 1.96, 1.91, 1.90
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:05:50 +00:00
jeff
3fa60901d6 MFC Rev 1.107
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:05:47 +00:00
jeff
0fba4c736a MFC Rev 1.288
VFS SMP fixes, stack api, softupdates fixes.

Sponsored by:	Isilon Systems, Inc.
Approved by:	re (scottl)
2006-03-13 03:05:42 +00:00
andre
7b2dfff5ed MFC rev. 1.23: Properly handle the case when the packet secondary zone can't allocate
further mbuf clusters to attach to mbufs.

Approved by:	re (scottl)
2006-03-12 16:27:40 +00:00
jhb
025e3d0a95 MFC: Split struct ithd into struct intr_thread and intr_event and
associated changes.  More details below:

  Remove public declarations of variables that were forgotten when they were
  made static.

  Revision  Changes    Path
  1.31      +0 -1      src/sys/sys/interrupt.h

  Make sure the interrupt is masked before processing it, or bad things
  can happen.

  Revision  Changes    Path
  1.10      +3 -3      src/sys/arm/arm/intr.c

  Reorganize the interrupt handling code a bit to make a few things cleaner
  and increase flexibility to allow various different approaches to be tried
  in the future.
  - Split struct ithd up into two pieces.  struct intr_event holds the list
    of interrupt handlers associated with interrupt sources.
    struct intr_thread contains the data relative to an interrupt thread.
    Currently we still provide a 1:1 relationship of events to threads
    with the exception that events only have an associated thread if there
    is at least one threaded interrupt handler attached to the event.  This
    means that on x86 we no longer have 4 bazillion interrupt threads with
    no handlers.  It also means that interrupt events with only INTR_FAST
    handlers no longer have an associated thread either.
  - Renamed struct intrhand to struct intr_handler to follow the struct
    intr_foo naming convention.  This did require renaming the powerpc
    MD struct intr_handler to struct ppc_intr_handler.
  - INTR_FAST no longer implies INTR_EXCL on all architectures except for
    powerpc.  This means that multiple INTR_FAST handlers can attach to the
    same interrupt and that INTR_FAST and non-INTR_FAST handlers can attach
    to the same interrupt.  Sharing INTR_FAST handlers may not always be
    desirable, but having sio(4) and uhci(4) fight over an IRQ isn't fun
    either.  Drivers can always still use INTR_EXCL to ask for an interrupt
    exclusively.  The way this sharing works is that when an interrupt
    comes in, all the INTR_FAST handlers are executed first, and if any
    threaded handlers exist, the interrupt thread is scheduled afterwards.
    This type of layout also makes it possible to investigate using interrupt
    filters ala OS X where the filter determines whether or not its companion
    threaded handler should run.
  - Aside from the INTR_FAST changes above, the impact on MD interrupt code
    is mostly just 's/ithread/intr_event/'.
  - A new MI ddb command 'show intrs' walks the list of interrupt events
    dumping their state.  It also has a '/v' verbose switch which dumps
    info about all of the handlers attached to each event.
  - We currently don't destroy an interrupt thread when the last threaded
    handler is removed because it would suck for things like ppbus(8)'s
    braindead behavior.  The code is present, though, it is just under
    #if 0 for now.
  - Move the code to actually execute the threaded handlers for an interrrupt
    event into a separate function so that ithread_loop() becomes more
    readable.  Previously this code was all in the middle of ithread_loop()
    and indented halfway across the screen.
  - Made struct intr_thread private to kern_intr.c and replaced td_ithd
    with a thread private flag TDP_ITHREAD.
  - In statclock, check curthread against idlethread directly rather than
    curthread's proc against idlethread's proc. (Not really related to intr
    changes)

  Tested on:      alpha, amd64, i386, sparc64
  Tested on:      arm, ia64 (older version of patch by cognet and marcel)

  Revision  Changes    Path
  1.88      +43 -29    src/sys/alpha/alpha/interrupt.c
  1.38      +5 -5      src/sys/alpha/isa/isa.c
  1.16      +58 -52    src/sys/amd64/amd64/intr_machdep.c
  1.6       +1 -1      src/sys/amd64/include/intr_machdep.h
  1.16      +2 -2      src/sys/amd64/isa/atpic.c
  1.11      +28 -22    src/sys/arm/arm/intr.c
  1.462     +2 -2      src/sys/dev/sio/sio.c
  1.6       +1 -1      src/sys/dev/uart/uart_kbd_sun.c
  1.24      +2 -2      src/sys/dev/uart/uart_tty.c
  1.15      +58 -52    src/sys/i386/i386/intr_machdep.c
  1.8       +1 -1      src/sys/i386/include/intr_machdep.h
  1.21      +2 -2      src/sys/i386/isa/atpic.c
  1.52      +32 -25    src/sys/ia64/ia64/interrupt.c
  1.180     +3 -2      src/sys/kern/kern_clock.c
  1.127     +437 -270  src/sys/kern/kern_intr.c
  1.206     +0 -1      src/sys/kern/subr_witness.c
  1.6       +3 -3      src/sys/powerpc/include/intr_machdep.h
  1.7       +35 -32    src/sys/powerpc/powerpc/intr_machdep.c
  1.14      +1 -1      src/sys/sparc64/include/intr_machdep.h
  1.24      +43 -36    src/sys/sparc64/sparc64/intr_machdep.c
  1.32      +36 -36    src/sys/sys/interrupt.h
  1.440     +1 -3      src/sys/sys/proc.h

  Catch up with interrupt-thread changes.

  Revision  Changes    Path
  1.32      +1 -1      src/sys/dev/zs/zs.c

  Catch up with new interrupt handling code.

  Revision  Changes    Path
  1.16      +3 -3      src/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c

  Catch up with new interrupt handling code.

  Revision  Changes    Path
  1.162     +2 -2      src/sys/dev/cy/cy.c
  1.101     +2 -2      src/sys/dev/rc/rc.c

  Catch up with new interrupt handling code.

  Revision  Changes    Path
  1.50      +2 -2      src/sys/dev/cx/if_cx.c
  1.41      +1 -1      src/sys/dev/sab/sab.c
  1.238     +2 -2      src/sys/pc98/cbus/sio.c

  Add a swi_remove() function to teardown software interrupt handlers.  For
  now it just calls intr_event_remove_handler(), but at some point it might
  also be responsible for tearing down interrupt events created via swi_add.

  Revision  Changes    Path
  1.128     +17 -0     src/sys/kern/kern_intr.c
  1.33      +1 -0      src/sys/sys/interrupt.h

  - Use swi_remove() to teardown swi handlers rather than
    intr_event_remove_handler().
  - Remove tty: prefix from a couple of swi handler names.

  Revision  Changes    Path
  1.51      +1 -1      src/sys/dev/cx/if_cx.c
  1.102     +2 -2      src/sys/dev/rc/rc.c
  1.42      +1 -1      src/sys/dev/sab/sab.c
  1.25      +1 -1      src/sys/dev/uart/uart_tty.c
  1.33      +1 -1      src/sys/dev/zs/zs.c
  1.17      +2 -2      src/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c

  Remove a stray return statement in the interrupt dispatch function
  that caused a premature exit after calling a fast interrupt handler
  and bypassing a much needed critical_exit() and the scheduling of
  the interrupt thread for non-fast handlers. In short: unbreak :-)

  Revision  Changes    Path
  1.53      +0 -1      src/sys/ia64/ia64/interrupt.c

  If we get a stray interrupt, return after logging it.  In the extremely
  rare case of a stray interrupt to an unregistered source (such as a stray
  interrupt from the 8259As when using APIC), this could result in a page
  fault when it tried to walk the list of interrupt handlers to execute
  INTR_FAST handlers.  This bug was introduced with the intr_event changes,
  so it's not present in 5.x or 6.x.

  Submitted by:   Mark Tinguely tinguely at casselton dot net

  Revision  Changes    Path
  1.17      +1 -0      src/sys/amd64/amd64/intr_machdep.c
  1.16      +1 -0      src/sys/i386/i386/intr_machdep.c

Approved by:	re (scottl)
2006-03-10 19:37:35 +00:00
tegge
7d50ddd92e MFC: Eliminate a deadlock when creating snapshots. Blocking
vn_start_write() must be called without any vnode locks held.
     Remove calls to vn_start_write() and vn_finished_write() in
     vnode_pager_putpages() and add these calls before the vnode lock
     is obtained to most of the callers that don't already have them.

Approved by:	re (mux)
2006-03-09 00:18:45 +00:00
tegge
ca00351165 MFC: Don't try to show marker nodes.
Approved by:	re (mux)
2006-03-09 00:04:27 +00:00
tegge
f3859919e3 MFC: For low memory situations, non-VMIO buffers didnt't release pages back
to the system when brelse() was called with B_RELBUF set on the buffer.
     This could be a problem when the system was low on memory, had many
     buffers on QUEUE_EMPTYKVA and started to traverse directories.  For
     each getnewbuf(), pages were allocated from the system, driving the
     free reserve downwards. For each brelse(), the system put the buffer
     on QUEUE_CLEAN, with B_INVAL set.

     This commit changes the semantics of B_RELBUF to also free pages from
     non-VMIO buffers.

Approved by:	re (mux)
2006-03-08 23:57:07 +00:00
jhb
3d7b05e4b2 MFC: Close some races between procfs/ptrace and exit1() by changing
exit1() to block until any current PHOLD's are released.  This includes
Simplifying the cleanup code in kern_ptrace() and removing the now
unnecessary vmspace ref counting magic from proc_rwmem().  Also, the
locking for ptrace_single_step(), ptrace_set_pc(), and
ptrace_clear_single_step() have been fixed to be consistent across the
tree.

Approved by:	re (scottl)
2006-03-07 18:08:09 +00:00
ps
9863378685 MFC:
Don't truncate f_mntfromname & f_mntonname to 16 characters when
translating statfs into ostatfs.  Also use strlcpy instead of bcopy
to make sure the copied strings are properly terminated.

Approved by:	re (scottl)
2006-03-06 10:56:43 +00:00
ps
25e5540c17 MFC: rev 1.153
Fix bug in malloc_uninit():
Releasing items from the mt_zone can not be done by a simple
uma_zfree() call since mt_zone is allocated with the UMA_ZONE_MALLOC
flag. Use uma_zfree_arg instead and supply the slab.

This bug caused panics in low memory situations on unloading kernel
modules containing MALLOC_DEFINE(..) statements.

Approved by:	re (scottl)
2006-03-06 08:42:07 +00:00
mnag
44fb063930 MFC 1.23:
- Print message about cpufreq and timecounter TSC

Approved by:	re (scottl)
2006-03-05 00:03:29 +00:00
andre
d097823b38 MFC: Make sysctl_msec_to_ticks(SYSCTL_HANDLER_ARGS) generally available instead
of being private to tcp_timer.c.

Sponsored by:	TCP/IP Optimization Fundraise 2005
Approved by:	re (scottl)
2006-03-01 21:08:53 +00:00
andre
5a2c39cf68 MFC uipc_domain.c rev. 1.45 and uipc_mbuf.c rev. 1.162:
Make kern.ipc.[max_linkhdr|max_protohdr|max_hdr|max_datalen] read-only.

Sponsored by:	TCP/IP Optimization Fundraise 2005
Approved by:	re (scottl)
2006-03-01 20:58:36 +00:00
jhb
7d639ae56e MFC: Remove extraneous PHOLD() in kthread_create().
Approved by:	re (scottl)
2006-03-01 20:53:24 +00:00
andre
0d82649a50 MFC: Replace 4k mbuf clusters with PAGE_SIZE clusters.
Note: The jumbo mbuf cluster API has been MFC'd only recently and
never shipped in a release.  Thus the API change does not violate
our stable branch guidelines with regard to API compatibility.

Requested by:	glebius, gallatin
Sponsored by:	TCP/IP Optimization Fundraise 2005
Approved by:	re (scottl)
2006-03-01 20:51:49 +00:00
davidxu
f5028de3c4 MFC revision 1.325.
Approved by: re (scottl)
2006-02-27 00:22:04 +00:00
davidxu
c3b8740b48 MFC following revisions to fix sleep queue and thread
suspension race:
    sys/proc.h                  revision 1.453
    sys/sleepqueue.h            revision 1.7
    kern/subr_sleepqueue        revision 1.24 - 1.26
    kern/kern_sig.c             revision 1.321, 1.323, 1.324
    kern/kern_synch.c           revision 1.276, 1.278
    kern/kern_condvar.c         revision 1.54, 1.55
    kern/kern_kse.c             revision 1.325
    kern/kern_thread.c          revision 1.228, 1.229

Approved by: re (scottl)
2006-02-27 00:19:40 +00:00
davidxu
c60c425416 MFC revision 1.219.
Approved by: re (scottl)
2006-02-27 00:01:15 +00:00
davidxu
b8ee4ad4ee MFC revision 1.42.
Approved by: re (scottl)
2006-02-26 23:59:00 +00:00
jhb
35b2a57ba2 MFC: Sync up to rev 1.80 from HEAD:
- Use a dedicated kthread to call acctwatch() periodically rather than
  a callout from softclock().
- Validate new values for the kern.acct_chkfreq sysctl.
- Whitespace and include sorting.

Approved by:	re (scottl)
2006-02-14 23:13:17 +00:00
rwatson
4b2bdfb9e4 Merge vfs_mount.c:1.213 from HEAD to RELENG_6:
Cast VFS_STATFS() in vfs_domount() to (void) to indicate that ignoring the
  return value is intentional: this is simply an attempt to pre-cache the
  statfs state.

  Found with:     Coverity Prevent (tm)

Approved by:	re (scottl)
2006-02-14 21:57:09 +00:00