freebsd-dev/sys/kern
Alan Cox db24060c25 Correct the handling of two unusual cases by the zero-copy receive path,
specifically, vm_pgmoveco():
1. If vm_pgmoveco() sleeps on a busy page, it must redo the look up
because the page may have been freed.
2. If the receive buffer is copy-on-write due to, for example, a fork,
then although the first vm object in the shadow chain may not contain
a page there may still be one from a backing object that is mapped.
Thus, a pmap_remove() is required for the new page rather than the
backing object's page to been seen by the application.

Also, add some comments to vm_pgmoveco() and update some assertions.

Tested by: ken@
2004-12-13 06:24:14 +00:00
..
bus_if.m Minor formatting fixes for lines > 80 characters 2004-08-12 17:26:22 +00:00
clock_if.m
device_if.m Minor formatting fixes for lines > 80 characters 2004-08-12 17:26:22 +00:00
genassym.sh
imgact_aout.c Axe a.out core dump support. Neither older gdb binaries nor current 2004-11-27 06:46:59 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c On arm, set the default elf brand to FreeBSD, until the binutils do it for us. 2004-09-23 23:29:24 +00:00
imgact_gzip.c
imgact_shell.c Don't treat # as a comment in interpreter specification line. 2004-10-31 11:12:59 +00:00
inflate.c
init_main.c The remaining part of nmount/omount/rootfs mount changes. I cannot sensibly 2004-12-07 08:15:41 +00:00
init_sysent.c Regen. 2004-11-25 12:08:16 +00:00
kern_acct.c Rework how we store process times in the kernel such that we always store 2004-10-05 18:51:11 +00:00
kern_acl.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
kern_alq.c
kern_clock.c Rework how we store process times in the kernel such that we always store 2004-10-05 18:51:11 +00:00
kern_condvar.c Refine the turnstile and sleep queue interfaces just a bit: 2004-10-12 18:36:20 +00:00
kern_conf.c Get rid of the magic "stash" of cdev structures, we no longer call 2004-10-25 13:12:06 +00:00
kern_context.c
kern_descrip.c Sort and wash #includes. 2004-12-03 21:29:25 +00:00
kern_environment.c Retire TUNABLE_QUAD_*. 2004-11-08 18:22:22 +00:00
kern_event.c Move a FILEDESC_UNLOCK upwards to silence witness. 2004-11-16 14:41:31 +00:00
kern_exec.c Don't include sys/user.h merely for its side-effect of recursively 2004-11-27 06:51:39 +00:00
kern_exit.c Don't include sys/user.h merely for its side-effect of recursively 2004-11-27 06:51:39 +00:00
kern_fork.c Don't include sys/user.h merely for its side-effect of recursively 2004-11-27 06:51:39 +00:00
kern_idle.c Give the 4bsd scheduler the ability to wake up idle processors 2004-09-01 06:42:02 +00:00
kern_intr.c Don't bother exiting storming mode once a second to see if it has gone 2004-11-17 14:39:41 +00:00
kern_jail.c Add two missing includes and remove two uneeded. 2004-06-27 09:03:22 +00:00
kern_kse.c Remove local definitions of RANGEOF() and use __rangeof() instead. 2004-11-20 23:00:59 +00:00
kern_kthread.c Give setrunqueue() and sched_add() more of a clue as to 2004-09-01 02:11:28 +00:00
kern_ktr.c - Change the ddb paging "support" to use a variable (db_lines_per_page) to 2004-11-01 22:15:15 +00:00
kern_ktrace.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
kern_linker.c When trying each linker class in turn with a preloaded module, exit 2004-08-27 01:20:26 +00:00
kern_lock.c When upgrading the shared lock to an exclusive lock, if we discover 2004-11-29 22:58:32 +00:00
kern_lockf.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
kern_mac.c Bump MAC Framework version to 2 in preparation for the upcoming API/ABI 2004-11-09 11:28:40 +00:00
kern_malloc.c Turn VM_KMEM_SIZE_MAX and VM_KMEM_SIZE_SCALE into tunables. 2004-09-29 14:21:40 +00:00
kern_mbuf.c CTASSERT that MSZIE is a power of 2 (otherwise dtom() breaks) 2004-09-20 08:52:04 +00:00
kern_mib.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
kern_module.c Don't bother calling the module event handlers from module_shutdown() 2004-08-20 21:47:48 +00:00
kern_mtxpool.c
kern_mutex.c Refine the turnstile and sleep queue interfaces just a bit: 2004-10-12 18:36:20 +00:00
kern_ntptime.c Place function comment above the right function. 2004-11-19 00:58:30 +00:00
kern_physio.c Remove buf->b_dev field. 2004-11-04 07:59:57 +00:00
kern_poll.c Add a NULL param to an mi_switch() that I missed. 2004-07-03 02:38:03 +00:00
kern_proc.c Axe a.out core dump support. Neither older gdb binaries nor current 2004-11-27 06:46:59 +00:00
kern_prot.c Remove sched_free_thread() which was only used 2004-08-31 06:12:13 +00:00
kern_resource.c Rework how we store process times in the kernel such that we always store 2004-10-05 18:51:11 +00:00
kern_sema.c Change the return value of sema_timedwait() so it returns 0 on 2004-06-14 18:19:05 +00:00
kern_shutdown.c Replace a printf with a KASSERT that we are indeed running on the BSP. 2004-11-30 06:21:38 +00:00
kern_sig.c Fix an off by one error. MAXPATHLEN already has +1. 2004-11-15 20:51:32 +00:00
kern_subr.c Correct the handling of two unusual cases by the zero-copy receive path, 2004-12-13 06:24:14 +00:00
kern_switch.c Remove local definitions of RANGEOF() and use __rangeof() instead. 2004-11-20 23:00:59 +00:00
kern_sx.c
kern_synch.c Unlock mutex if PDROP was set by caller. 2004-11-27 11:43:31 +00:00
kern_syscalls.c Do a pass over all modules in the kernel and make them return EOPNOTSUPP 2004-07-15 08:26:07 +00:00
kern_sysctl.c Move the 'debug' sysctl tree under options SYSCTL_DEBUG. It generates 2004-10-27 19:26:01 +00:00
kern_tc.c Put on my peril sensitive sunglasses and add a flags field to the internal 2004-10-11 22:04:16 +00:00
kern_thr.c If a thread is resumed by thr_wake, it should return 0, especially it 2004-12-01 13:50:04 +00:00
kern_thread.c Remove local definitions of RANGEOF() and use __rangeof() instead. 2004-11-20 23:00:59 +00:00
kern_time.c Rework how we store process times in the kernel such that we always store 2004-10-05 18:51:11 +00:00
kern_timeout.c Cut a KTR record whenever a callout is invoked. Mark whether it runs 2004-08-06 21:49:00 +00:00
kern_umtx.c Forgot to inline umtxq_unlock. 2004-11-30 12:18:53 +00:00
kern_uuid.c
kern_xxx.c In osethostname(), don't need to call suser() directly as 2004-10-22 12:10:50 +00:00
ksched.c
link_elf_obj.c Add support for completing the installation of ELF relocatable 2004-08-29 01:21:51 +00:00
link_elf.c Normalize the VM wiring done with SPARSE_MAPPING: check for errors, and 2004-08-09 18:46:13 +00:00
linker_if.m
Make.tags.inc
Makefile
makesyscalls.sh
md4c.c
md5c.c
p1003_1b.c
posix4_mib.c Back when VOP_* was introduced, we did not have new-style struct 2004-12-01 23:16:38 +00:00
sched_4bsd.c Propagate TDF_NEEDRESCHED to replacement thread in sched_switch(). 2004-12-07 18:17:24 +00:00
sched_ule.c - Temporarily disable the nice -20 throttling code. It has some interaction 2004-11-11 19:48:57 +00:00
subr_acl_posix1e.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
subr_autoconf.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
subr_blist.c Move the definitions of SWAPBLK_NONE and SWAPBLK_MASK from vm_page.h to 2004-06-04 04:03:26 +00:00
subr_bus.c Add the devclass_get_count(9) function and man page. It gets a count of 2004-12-08 02:39:56 +00:00
subr_clist.c Preparation commit for the tty cleanups that will follow in the near 2004-07-15 20:47:41 +00:00
subr_clock.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
subr_devstat.c Do the dreaded s/dev_t/struct cdev */ 2004-06-16 09:47:26 +00:00
subr_disk.c Add bioq_takefirst(). 2004-08-19 19:51:51 +00:00
subr_eventhandler.c Use 'const char *' for a few prototypes. 2004-12-06 10:53:40 +00:00
subr_hints.c
subr_kdb.c Zero terminate empty sting in kdb_sysctl_available. 2004-10-21 01:11:25 +00:00
subr_kobj.c
subr_log.c Do the dreaded s/dev_t/struct cdev */ 2004-06-16 09:47:26 +00:00
subr_mbpool.c
subr_mchain.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
subr_module.c
subr_msgbuf.c
subr_param.c Fix the build. 2004-11-30 03:23:35 +00:00
subr_pcpu.c
subr_power.c
subr_prf.c Update for the KDB framework: 2004-07-10 21:43:23 +00:00
subr_prof.c - Move TDF_OWEPREEMPT, TDF_OWEUPC, and TDF_USTATCLOCK over to td_pflags 2004-07-16 21:04:55 +00:00
subr_rman.c Add a newline. 2004-08-19 20:16:09 +00:00
subr_rtc.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
subr_sbuf.c Cosmetic adjustment to previous commit: name the second argument to 2004-07-09 11:37:44 +00:00
subr_scanf.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
subr_sleepqueue.c - Store threads on sleep queues in FIFO order rather than sorted by 2004-11-05 20:19:58 +00:00
subr_smp.c Move 4bsd specific experimental IP code into the 4bsd file. 2004-09-03 07:42:31 +00:00
subr_taskqueue.c Add taskqueue_drain. This waits for the specified task to finish, if 2004-10-05 04:16:01 +00:00
subr_trap.c Add a new per-thread private flag: TDP_GEOM. 2004-10-23 20:49:17 +00:00
subr_turnstile.c Refine the turnstile and sleep queue interfaces just a bit: 2004-10-12 18:36:20 +00:00
subr_unit.c Add delete_unrhdr() function. 2004-10-25 12:27:03 +00:00
subr_witness.c clean up some tunables that should of been removed a while ago... 2004-11-09 06:46:14 +00:00
sys_generic.c Push Giant down through ioctl. 2004-11-17 09:09:55 +00:00
sys_pipe.c Correct a bug introduced in sys_pipe.c:1.179: in pipe_ioctl(), 2004-11-23 22:15:08 +00:00
sys_process.c Don't include sys/user.h merely for its side-effect of recursively 2004-11-27 06:51:39 +00:00
sys_socket.c Push Giant down through ioctl. 2004-11-17 09:09:55 +00:00
syscalls.c Regen. 2004-11-25 12:08:16 +00:00
syscalls.master Mark mount, unmount and nmount MPSAFE 2004-11-25 12:07:28 +00:00
sysv_ipc.c Add an annotation to the comment for sysv_ipc.c to indicate that the 2004-10-22 12:12:40 +00:00
sysv_msg.c Second of several commits to allow kernel System V IPC data structures 2004-11-12 13:23:47 +00:00
sysv_sem.c Correct two incorrectly merged changes introduced in sysv_sem.c:1.71: 2004-11-13 08:06:40 +00:00
sysv_shm.c Second of several commits to allow kernel System V IPC data structures 2004-11-12 13:23:47 +00:00
tty_compat.c Put the pre FreeBSD-2.x tty compat code under BURN_BRIDGES. 2004-06-21 22:57:16 +00:00
tty_conf.c Preparation commit for the tty cleanups that will follow in the near 2004-07-15 20:47:41 +00:00
tty_cons.c Remove the last vestiges of the userconfig option. None of this actually 2004-12-01 04:59:33 +00:00
tty_pty.c Add new function ttyinitmode() which sets our systemwide default 2004-10-18 21:51:27 +00:00
tty_subr.c Preparation commit for the tty cleanups that will follow in the near 2004-07-15 20:47:41 +00:00
tty_tty.c Second half of the dev_t cleanup. 2004-06-17 17:16:53 +00:00
tty.c Improvements and fixes in the 1.241 commit: 2004-11-16 17:41:16 +00:00
uipc_accf.c Add a global mutex, accept_filter_mtx, to protect the global list of 2004-06-01 04:08:48 +00:00
uipc_cow.c Introduce two new options, "CPU private" and "no wait", to sf_buf_alloc(). 2004-11-08 00:43:46 +00:00
uipc_domain.c Start the protocol timeouts only after all domains have been initialized 2004-12-09 11:47:30 +00:00
uipc_mbuf2.c Rename _m_tag_free() to m_tag_free_default() and make it non-static. 2004-10-11 18:40:19 +00:00
uipc_mbuf.c add m_append utility function to be used in forthcoming changes 2004-12-08 05:42:02 +00:00
uipc_proto.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
uipc_sem.c Add missing #include <sys/module.h> 2004-05-30 20:34:58 +00:00
uipc_sockbuf.c Fix a typo in a comparison appeared in rev. 1.125. 2004-10-27 05:37:58 +00:00
uipc_socket2.c Fix a typo in a comparison appeared in rev. 1.125. 2004-10-27 05:37:58 +00:00
uipc_socket.c Remove unneeded code from the zero-copy receive path. 2004-12-10 04:49:13 +00:00
uipc_syscalls.c Introduce an alias for FILEDESC_{UN}LOCK() with the suffix _FAST. 2004-11-13 11:53:02 +00:00
uipc_usrreq.c "nfiles" is a bad name for a global variable. Call it "openfiles" instead 2004-12-01 09:22:26 +00:00
vfs_acl.c Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is 2004-07-26 07:24:04 +00:00
vfs_aio.c Remove buf->b_dev field. 2004-11-04 07:59:57 +00:00
vfs_bio.c - Eliminate the acquisition and release of the bqlock in bremfree() by 2004-11-18 08:44:09 +00:00
vfs_cache.c Remove advertising clause from University of California Regent's license, 2004-04-05 21:03:37 +00:00
vfs_cluster.c Don't manually set b_bufobj, pbgetvp() does this for us. 2004-11-15 08:38:50 +00:00
vfs_default.c Add missing vop_bypass (returning EOPNOTSUPP). 2004-12-03 08:56:30 +00:00
vfs_export.c Sigh. I really need to get an internet connection which is less than 2004-11-29 14:00:08 +00:00
vfs_extattr.c Eliminate pointless goto. 2004-11-16 08:22:06 +00:00
vfs_init.c The remaining part of nmount/omount/rootfs mount changes. I cannot sensibly 2004-12-07 08:15:41 +00:00
vfs_lookup.c Make NAMEI_DIAGNOSTIC compile again and add a stragic vprint() 2004-12-03 12:15:39 +00:00
vfs_mount.c Copy the entire stats structure. Let compiler decide how. 2004-12-11 22:13:02 +00:00
vfs_subr.c The remaining part of nmount/omount/rootfs mount changes. I cannot sensibly 2004-12-07 08:15:41 +00:00
vfs_syscalls.c Eliminate pointless goto. 2004-11-16 08:22:06 +00:00
vfs_vnops.c Ok, first blunder: ioctls are not entirely unused on vnodes anymore :-) 2004-11-18 17:15:04 +00:00
vnode_if.src Make VOP_BMAP return a struct bufobj for the underlying storage device 2004-11-15 09:18:27 +00:00