opnsense-src/sys
Peter Wemm a9a0bbad19 Copy the va_list in sbuf_vprintf() before passing it to vsnprintf(),
because we could fail due to a small buffer and loop and rerun.  If this
happens, then the vsnprintf() will have already taken the arguments off
the va_list.  For i386 and others, this doesn't matter because the
va_list type is a passed as a copy.  But on powerpc and amd64, this is
fatal because the va_list is a reference to an external structure that
keeps the vararg state due to the more complicated argument passing system.
On amd64, arguments can be passed as follows:
First 6 int/pointer type arguments go in registers, the rest go on
  the memory stack.
Float and double are similar, except using SSE registers.
long double (80 bit precision) are similar except using the x87 stack.
Where the 'next argument' comes from depends on how many have been
processed so far and what type it is.  For amd64, gcc keeps this state
somewhere that is referenced by the va_list.

I found a description that showed the va_copy was required here:
http://mirrors.ccs.neu.edu/cgi-bin/unixhelp/man-cgi?va_end+9
The single unix spec doesn't mention va_copy() at all.

Anyway, the problem was that the sysctl kern.geom.conf* nodes would panic
due to walking off the end of the va_arg lists in vsnprintf.  A better fix
would be to have sbuf_vprintf() use a single pass and call kvprintf()
with a callback function that stored the results and grew the buffer
as needed.

Approved by:	re (scottl)
2003-05-25 19:03:08 +00:00
..
alpha sys/sys/limits.h: 2003-05-19 20:29:07 +00:00
amd64 Stop profiled libc from exploding, matching gcc's generated code. 2003-05-24 18:24:03 +00:00
arm sys/sys/limits.h: 2003-05-19 20:29:07 +00:00
boot Fixed the markup and wording of the kern.ipc.nsfbufs tunable. 2003-05-17 22:17:23 +00:00
cam Add a quirk for OTi USB flash key. 2003-05-15 17:35:35 +00:00
coda - Move p->p_sigmask to td->td_sigmask. Signal masks will be per thread with 2003-03-31 22:49:17 +00:00
compat Deal with the user VM space expanding. 32 bit applications do not like 2003-05-23 05:07:33 +00:00
conf Major pmap rework to take advantage of the larger address space on amd64 2003-05-23 05:04:54 +00:00
contrib This commit was generated by cvs2svn to compensate for changes in r115013, 2003-05-15 05:04:44 +00:00
crypto Assembly files put thru the C preprocessor need to have C style comments. 2003-04-21 16:30:12 +00:00
ddb Move the _oncpu entry from the KSE to the thread. 2003-04-10 17:35:44 +00:00
dev Always set the hardware parse bit in the IPCB structure when this 2003-05-25 05:04:26 +00:00
fs Clean up proc locking in procfs: make sure the proc lock is held before 2003-05-05 15:12:51 +00:00
geom Don't do silly thing if the disk_create() event gets canceled. 2003-05-25 16:57:10 +00:00
gnu This commit was generated by cvs2svn to compensate for changes in r113778, 2003-04-21 02:27:52 +00:00
i4b - Add vm_paddr_t, a physical address type. This is required for systems 2003-03-25 00:07:06 +00:00
i386 Make ciss usable under PAE 2003-05-21 07:17:06 +00:00
ia64 Now that we define user mode as any IP address that isn't in the 2003-05-25 01:01:28 +00:00
isa Only use the pc bios stuff on i386's. I think this might even be unused 2003-05-01 04:23:15 +00:00
isofs/cd9660 Rename vfs_stdsync function to vfs_stdnosync which matches more 2003-03-11 22:15:10 +00:00
kern Copy the va_list in sbuf_vprintf() before passing it to vsnprintf(), 2003-05-25 19:03:08 +00:00
libkern Deprecate machine/limits.h in favor of new sys/limits.h. 2003-04-29 13:36:06 +00:00
modules Move the ips driver from ${MACHINE_ARCH} == "i386" to ${MACHINE} == "i386". 2003-05-13 11:26:08 +00:00
net Define a link layer MIB for ATM. Most fields of this MIB are needed by 2003-05-05 16:35:52 +00:00
netatalk - Use if_broadcastaddr from struct ifnet rather than relying on 2003-03-21 17:53:16 +00:00
netatm Use __FBSDID rather than rcsid[]. 2003-04-03 21:36:33 +00:00
netgraph fix a cut-n-paste error. 2003-05-15 18:51:28 +00:00
netinet Correct a bug introduced with reduced TCP state handling; make 2003-05-07 05:26:27 +00:00
netinet6 Add definitions for IN6ADDR_LINKLOCAL_ALLMDNS_INIT and INADDR_ALLMDNS_GROUP. 2003-04-29 22:03:46 +00:00
netipsec Introduce an M_ASSERTPKTHDR() macro which performs the very common task 2003-04-08 14:25:47 +00:00
netipx Remove unimplemented IP-in-IPX encapsulation support (options IPTUNNEL). 2003-03-08 06:58:22 +00:00
netkey Introduce an M_ASSERTPKTHDR() macro which performs the very common task 2003-04-08 14:25:47 +00:00
netnatm Introduce an M_ASSERTPKTHDR() macro which performs the very common task 2003-04-08 14:25:47 +00:00
netncp - Merge struct procsig with struct sigacts. 2003-05-13 20:36:02 +00:00
netsmb - Merge struct procsig with struct sigacts. 2003-05-13 20:36:02 +00:00
nfs Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
nfsclient Deal with the possibility of negative available space from the file server 2003-05-19 22:35:00 +00:00
nfsserver Beat vnode locking in the NFS server code into submission. This change 2003-05-25 06:17:33 +00:00
opencrypto Gigacommit to improve device-driver source compatibility between 2003-03-03 12:15:54 +00:00
pc98 Clear up that COMPAT_43 may not do the same thing on every architecture 2003-05-15 02:10:30 +00:00
pccard 1. Allow drivers to query CIS strings from OLDCARD. 2003-04-23 23:39:21 +00:00
pci Only use a SIA/SYM media info block if no MII block is detected. 2003-05-15 16:53:29 +00:00
posix4 Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
powerpc sys/sys/limits.h: 2003-05-19 20:29:07 +00:00
rpc
security Rename MAC_MAX_POLICIES to MAC_MAX_SLOTS, since the variables and 2003-05-08 19:49:42 +00:00
sparc64 sys/sys/limits.h: 2003-05-19 20:29:07 +00:00
sys Fix two misuses of __BSD_VISIBLE. 2003-05-22 17:07:57 +00:00
tools MFp4: 2003-03-28 06:43:50 +00:00
ufs Lock the vm object when performing vm_object_page_clean(). 2003-05-18 22:02:51 +00:00
vm If we seem to be out of VM, don't allow the pagedaemon to kill 2003-05-19 00:51:07 +00:00
Makefile Exclude sys/boot for amd64. There are still toolchain issues to deal 2003-05-08 06:35:39 +00:00