freebsd-src/sys/kern
Warner Losh 358fef538f Sometimes, when asked to return region A..C, we'd return A+N..C+N
instead of failing.

When looking for a region to allocate, we used to check to see if the
start address was < end.  In the case where A..B is allocated already,
and one wants to allocate A..C (B < C), then this test would
improperly fail (which means we'd examine that region as a possible
one), and we'd return the region B+1..C+(B-A+1) rather than NULL.
Since C+(B-A+1) is necessarily larger than C (end argument), this is
incorrect behavior for rman_reserve_resource_bound().

The fix is to exclude those regions where r->r_start + count - 1 > end
rather than r->r_start > end.  This bug has been in this code for a
very long time.  I believe that all other tests against end are
correctly done.

This is why sio0 generated a message about interrupts not being
enabled properly for the device.  When fdc had a bug that allocated
from 0x3f7 to 0x3fb, sio0 was then given 0x3fc-0x404 rather than the
0x3f8-0x3ff that it wanted.  Now when fdc has the same bug, sio0 fails
to allocate its ports, which is the proper behavior.  Since the probe
failed, we never saw the messed up resources reported.

I suspect that there are other places in the tree that have weird
looping or other odd work arounds to try to cope with the observed
weirdness this bug can introduce.  These workarounds should be located
and eliminated.

Minor debug write fix to match the above test done as well.

'nice' by: mdodd
Sponsored by: timing solutions (http://www.timing.com/)
2005-03-15 20:28:51 +00:00
..
bus_if.m /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
clock_if.m /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
cpufreq_if.m Introduce a new method, cpufreq_drv_type(), that returns the type of the 2005-02-18 00:23:36 +00:00
device_if.m /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
genassym.sh
imgact_aout.c o Split out kernel part of execve(2) syscall into two parts: one that 2005-01-29 23:12:00 +00:00
imgact_elf.c o Split out kernel part of execve(2) syscall into two parts: one that 2005-01-29 23:12:00 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_gzip.c o Split out kernel part of execve(2) syscall into two parts: one that 2005-01-29 23:12:00 +00:00
imgact_shell.c o Replace two while {} do loops with more appropriate do {} while loops. This 2005-02-25 10:17:53 +00:00
inflate.c
init_main.c Add /rescue/init to the default init_path, before /stand/sysinstall. 2005-02-17 10:00:10 +00:00
init_sysent.c regen 2005-03-01 17:44:34 +00:00
kern_acct.c When mac_check_system_acct() fails, make sure to unlock as well as close 2005-03-01 08:56:13 +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 /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
kern_clock.c - Define KTR points for KTR_SCHED. 2004-12-26 00:14:21 +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 Remove findcdev(). 2005-03-15 12:58:08 +00:00
kern_context.c
kern_cpu.c Add locking to handle multiple threads getting/setting frequencies at the 2005-02-27 01:34:08 +00:00
kern_descrip.c Remove redundant initialization that is repeated in the for() loop 2005-03-08 16:57:20 +00:00
kern_environment.c My addled brains didn't realize that since vtp points into value, we 2005-03-09 12:16:45 +00:00
kern_event.c Use kern_kevent instead of the stackgap for 32bit syscall wrapping. 2005-03-01 17:45:55 +00:00
kern_exec.c Welcome to the 21st century: increase MAXSHELLCMDLEN from 128 bytes to 2005-02-25 11:49:42 +00:00
kern_exit.c - A lock is required before calling VOP_REVOKE. Our reference protects us 2005-03-13 11:47:04 +00:00
kern_fork.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
kern_idle.c Set the scheduling class of the idle threads to PRI_IDLE. 2005-02-04 06:16:05 +00:00
kern_intr.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
kern_jail.c Add a new sysctl, "security.jail.chflags_allowed", which controls the 2005-02-08 21:31:11 +00:00
kern_kse.c Drop bzero and shove the responsibility of zeroing the kse upcall 2005-02-24 00:05:50 +00:00
kern_kthread.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +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 Make a SYSCTL_NODE static 2005-02-10 12:23:29 +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 - transferlockers() requires the interlock to be SMP safe. 2005-03-15 09:27:45 +00:00
kern_lockf.c Fix a debug message to print a usable device name rather than useless 2005-03-15 14:08:10 +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 Bring in MemGuard, a very simple and small replacement allocator 2005-01-21 18:09:17 +00:00
kern_mbuf.c Well, it seems that I pre-maturely removed the "All rights reserved" 2005-02-16 21:45:59 +00:00
kern_mib.c Add a sysctl that records the amount of physical memory in the machine. 2005-02-28 21:42:56 +00:00
kern_module.c Swap the arguments for CP so we copy the correct source and 2005-02-18 22:14:40 +00:00
kern_mtxpool.c Make a bunch of malloc types static. 2005-02-10 12:02:37 +00:00
kern_mutex.c Rework the optimization for spinlocks on UP to be slightly less drastic and 2005-01-05 21:13:27 +00:00
kern_ntptime.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
kern_physio.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
kern_poll.c Remove recently added note about DEVICE_POLLING not working with SMP. 2005-02-25 22:07:51 +00:00
kern_proc.c Function jailed() looks into ucred strcture, so be sure ucred is not NULL. 2005-03-12 14:31:04 +00:00
kern_prot.c In linux emulation layer try to detect attempt to use linux_clone() to 2005-03-03 16:57:55 +00:00
kern_resource.c Stop explicitly touching td_base_pri outside of the scheduler and simply 2004-12-30 20:29:58 +00:00
kern_sema.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +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 The td_waitset is pointing to a stack address when thread is waiting 2005-03-04 22:46:31 +00:00
kern_subr.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
kern_switch.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
kern_sx.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
kern_synch.c Stop explicitly touching td_base_pri outside of the scheduler and simply 2004-12-30 20:29:58 +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 Make another bunch of SYSCTL_NODEs static 2005-02-10 12:16:08 +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 /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
kern_thread.c Allocate umtx_q from heap instead of stack, this avoids 2005-03-05 09:15:03 +00:00
kern_time.c If the pointer to the new itimerval is NULL in kern_setitimer(), just 2005-02-07 21:45:48 +00:00
kern_timeout.c When processing a timeout() callout and returning it to the free 2005-02-11 00:14:00 +00:00
kern_umtx.c Allocate umtx_q from heap instead of stack, this avoids 2005-03-05 09:15:03 +00:00
kern_uuid.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
kern_xxx.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
ksched.c /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +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
link_elf_obj.c Add support for completing the installation of ELF relocatable 2004-08-29 01:21:51 +00:00
linker_if.m /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
Make.tags.inc
Makefile
makesyscalls.sh
md4c.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
md5c.c MD5Pad() should never have been exposed. 2005-02-10 12:20:42 +00:00
p1003_1b.c /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
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 Rework the interface between priority propagation (lending) and the 2004-12-30 20:52:44 +00:00
sched_ule.c - A test in sched_switch() is no longer necessary and it is incorrect 2005-02-23 00:50:26 +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 /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +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 Use dynamic major number allocation. 2005-02-27 22:00:45 +00:00
subr_clist.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_clock.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_devstat.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_disk.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_eventhandler.c eliminate potential null deref 2005-02-23 19:32:29 +00:00
subr_hints.c fix spelling of match in comment... 2005-03-10 21:23:06 +00:00
subr_kdb.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_kobj.c
subr_log.c Use dynamic major number allocation. 2005-02-27 22:02:03 +00:00
subr_mbpool.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_mchain.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_module.c
subr_msgbuf.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_param.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_pcpu.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_power.c
subr_prf.c Update for the KDB framework: 2004-07-10 21:43:23 +00:00
subr_prof.c netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
subr_rman.c Sometimes, when asked to return region A..C, we'd return A+N..C+N 2005-03-15 20:28:51 +00:00
subr_rtc.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
subr_sbuf.c Make a bunch of malloc types static. 2005-02-10 12:02:37 +00:00
subr_scanf.c
subr_sleepqueue.c Make a bunch of malloc types static. 2005-02-10 12:02:37 +00:00
subr_smp.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +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 Whitespace fix. 2004-12-30 20:30:58 +00:00
subr_turnstile.c Make a bunch of malloc types static. 2005-02-10 12:02:37 +00:00
subr_unit.c Remove debugging printfs. 2005-03-14 06:51:29 +00:00
subr_witness.c Document, via WITNESS, that the NFS server mutex falls ahead of the socket 2005-03-09 21:38:53 +00:00
sys_generic.c Declare "cnt" (a number of bytes to read or write) as an "ssize_t", not 2005-02-10 20:19:17 +00:00
sys_pipe.c Rearrange the kninit calls for both directions of a pipe so that 2005-01-17 07:56:28 +00:00
sys_process.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
sys_socket.c The SO_NOSIGPIPE socket option allows a user process to mark a socket 2005-03-11 15:06:16 +00:00
syscalls.c regen 2005-03-01 17:44:34 +00:00
syscalls.master Fix typo in comment. 2005-03-09 11:50:55 +00:00
sysv_ipc.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
sysv_msg.c Add much needed descriptions for a number of the IPC related sysctl OIDs. 2005-02-12 01:22:39 +00:00
sysv_sem.c Add much needed descriptions for a number of the IPC related sysctl OIDs. 2005-02-12 01:22:39 +00:00
sysv_shm.c Add much needed descriptions for a number of the IPC related sysctl OIDs. 2005-02-12 01:22:39 +00:00
tty.c Replace my previous change for 32 bit systems with hz > 169 with Bruce's 2005-03-12 00:13:45 +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 Use dynamic major number allocation for /dev/console, there is no 2005-02-27 21:52:42 +00:00
tty_pty.c Use dynamic major number allocation. 2005-02-27 22:02:03 +00:00
tty_subr.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
tty_tty.c Use dynamic major number allocation. 2005-02-27 22:02:03 +00:00
uipc_accf.c Move the logic implementing retrieval of the SO_ACCEPTFILTER socket option 2005-03-12 12:57:18 +00:00
uipc_cow.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
uipc_domain.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 23:35:40 +00:00
uipc_mbuf.c allow the destination of m_move_pkthdr to have external 2005-03-08 17:52:01 +00:00
uipc_mbuf2.c Make a bunch of malloc types static. 2005-02-10 12:02:37 +00:00
uipc_proto.c
uipc_sem.c Insert missing increment of (i) when walking the temporary semaphore 2005-02-25 21:00:14 +00:00
uipc_sockbuf.c Extend the coverage of the accept and socket mutexes in soisconnected() 2005-03-12 13:39:39 +00:00
uipc_socket.c Move the logic implementing retrieval of the SO_ACCEPTFILTER socket option 2005-03-12 12:57:18 +00:00
uipc_socket2.c Extend the coverage of the accept and socket mutexes in soisconnected() 2005-03-12 13:39:39 +00:00
uipc_syscalls.c Add kernel-only flag MSG_NOSIGNAL to be used in emulation layers to surpress 2005-03-08 16:11:41 +00:00
uipc_usrreq.c In the current world order, solisten() implements the state transition of 2005-02-21 21:58:17 +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 Make a SYSCTL_NODE static 2005-02-10 12:23:29 +00:00
vfs_bio.c - Lock access to the buffer_map with the vm_map lock. In 4.x this was 2005-03-08 09:34:54 +00:00
vfs_cache.c Make a SYSCTL_NODE and a mutex static 2005-02-10 12:16:42 +00:00
vfs_cluster.c make cluster_callback() static 2005-02-10 12:17:48 +00:00
vfs_default.c - Don't drop the lock in the default inactive handler anymore, VOP_NULL 2005-03-13 11:45:01 +00:00
vfs_export.c Make various mountpoint related functions static. 2005-02-10 12:25:38 +00:00
vfs_extattr.c - Don't VOP_UNLOCK prior to VOP_REVOKE. The lock is required now. 2005-03-13 11:45:51 +00:00
vfs_hash.c Improve the vfs_hash() API: vput() the unneeded vnode centrally to 2005-03-15 20:00:03 +00:00
vfs_init.c Remove VFS_START(). Its original purpose involved the mfs filesystem, 2005-02-20 23:02:20 +00:00
vfs_lookup.c - Tweak kern_msgctl() to return a copy of the requested message queue id 2005-02-07 18:44:55 +00:00
vfs_mount.c Remove VFS_START(). Its original purpose involved the mfs filesystem, 2005-02-20 23:02:20 +00:00
vfs_subr.c - Now that there are no external users of vfree() make it static. 2005-03-15 14:38:16 +00:00
vfs_syscalls.c - Don't VOP_UNLOCK prior to VOP_REVOKE. The lock is required now. 2005-03-13 11:45:51 +00:00
vfs_vnops.c - Do a vn_start_write in vn_close, we may write if this is the last ref 2005-03-13 11:56:28 +00:00
vnode_if.src - CLOSE, REVOKE, INACTIVE, and RECLAIM are not L L L, that's a locked vnode 2005-03-13 11:42:16 +00:00