freebsd-nq/sys
Conrad Meyer 14bdbaf2e4 Detect badly behaved coredump note helpers
Coredump notes depend on being able to invoke dump routines twice; once
in a dry-run mode to get the size of the note, and another to actually
emit the note to the corefile.

When a note helper emits a different length section the second time
around than the length it requested the first time, the kernel produces
a corrupt coredump.

NT_PROCSTAT_FILES output length, when packing kinfo structs, is tied to
the length of filenames corresponding to vnodes in the process' fd table
via vn_fullpath.  As vnodes may move around during dump, this is racy.

So:

 - Detect badly behaved notes in putnote() and pad underfilled notes.

 - Add a fail point, debug.fail_point.fill_kinfo_vnode__random_path to
   exercise the NT_PROCSTAT_FILES corruption.  It simply picks random
   lengths to expand or truncate paths to in fo_fill_kinfo_vnode().

 - Add a sysctl, kern.coredump_pack_fileinfo, to allow users to
   disable kinfo packing for PROCSTAT_FILES notes.  This should avoid
   both FILES note corruption and truncation, even if filenames change,
   at the cost of about 1 kiB in padding bloat per open fd.  Document
   the new sysctl in core.5.

 - Fix note_procstat_files to self-limit in the 2nd pass.  Since
   sometimes this will result in a short write, pad up to our advertised
   size.  This addresses note corruption, at the risk of sometimes
   truncating the last several fd info entries.

 - Fix NT_PROCSTAT_FILES consumers libutil and libprocstat to grok the
   zero padding.

With suggestions from:	bjk, jhb, kib, wblock
Approved by:	markj (mentor)
Relnotes:	yes
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D3548
2015-09-03 20:32:10 +00:00
..
amd64 Remove an unneeded instruction. 2015-08-28 00:17:21 +00:00
arm Clean up the style of the LEAVE_HYP macro. 2015-08-31 09:39:16 +00:00
arm64 Add support for the dwc usb in the HiSilicon hi6220 in the HiKey board. For 2015-09-01 17:13:04 +00:00
boot For UGA, the frame buffer address obtained by scanning the 2015-09-03 04:35:17 +00:00
bsm
cam Small UA cleanup. 2015-09-03 12:56:57 +00:00
cddl Apply the noline attribute to vdev_queue_max_async_writes 2015-08-31 23:10:42 +00:00
compat Fixes a panic triggered by threaded Linux applications when running 2015-09-02 14:04:13 +00:00
conf Add support for the dwc usb in the HiSilicon hi6220 in the HiKey board. For 2015-09-01 17:13:04 +00:00
contrib Fix compilation error on gcc-5.2.0 - it now warns on non-paranthen'ed 2015-08-30 08:46:50 +00:00
crypto const'ify an arg that we don't update... 2015-07-29 23:37:15 +00:00
ddb Make kstack_pages a tunable on arm, x86, and powepc. On i386, the 2015-08-10 17:18:21 +00:00
dev r249170 was just plain wrong. The effect of the change is to always 2015-09-03 17:46:57 +00:00
fs Fix an NFS server bug that manifested in "ls -al" displaying a plus 2015-08-28 14:26:11 +00:00
gdb CALLOUT_MPSAFE has lost its meaning since r141428, i.e., for more than ten 2015-05-22 17:05:21 +00:00
geom After the introduction of direct dispatch, the pacing code in g_down() 2015-09-02 17:29:30 +00:00
gnu Using consistent coding style to deal with error inside the loop. 2015-08-18 13:16:23 +00:00
i386 preload_search_info: make sure mod is set 2015-08-21 15:57:57 +00:00
isa
kern Detect badly behaved coredump note helpers 2015-09-03 20:32:10 +00:00
kgssapi
libkern Remove checks for __ARM_EABI__, we only build for EABI now. 2015-07-09 21:02:40 +00:00
mips Enable hardfloat for assembly generation. 2015-08-24 19:09:56 +00:00
modules New 1-Wire bus implementation. 1-Wire controller is abstracted, though 2015-08-27 23:33:38 +00:00
net Fix a panic which was reproducible by an infinite loop of 2015-09-02 16:30:45 +00:00
net80211 Replay r286410. Change KPI of how device drivers that provide wireless 2015-08-27 08:56:39 +00:00
netgraph * Address review (and add a bit myself). 2015-07-12 18:14:38 +00:00
netinet Put r284245 back in place: If at first this fix was seen as a temporary 2015-08-30 13:44:39 +00:00
netinet6 Simplify lla_rt_output()/nd6_add_ifa_lle() by setting lle state in 2015-08-31 05:03:36 +00:00
netipsec Make IPsec work with AES-GCM and AES-ICM (aka CTR) in OCF... IPsec 2015-08-04 17:47:11 +00:00
netnatm
netpfil pf: Fix misdetection of forwarding when net.link.bridge.pfil_bridge is set 2015-09-01 19:04:04 +00:00
netsmb
nfs
nfsclient Remove some oldnfs remnants. 2015-04-18 16:08:06 +00:00
nfsserver
nlm
ofed Currently the Linux character device mmap handling only supports mmap 2015-09-03 18:27:39 +00:00
opencrypto Make IPsec work with AES-GCM and AES-ICM (aka CTR) in OCF... IPsec 2015-08-04 17:47:11 +00:00
pc98 Add missing ofw_machdep.h. Make x86 ofw_machdep.h work pc98 too. 2015-08-28 15:41:09 +00:00
powerpc pmap_mapdev_attr() also takes a vm_paddr_t. 2015-09-03 01:38:15 +00:00
rpc Set curvnet context inside the RPC code in more places. 2015-08-18 18:12:46 +00:00
security fd: make 'rights' a manadatory argument to fget* functions 2015-07-05 19:05:16 +00:00
sparc64 Rationalize BSD license on sys/*/include/in_cksum.h 2015-08-05 19:05:12 +00:00
sys Detect badly behaved coredump note helpers 2015-09-03 20:32:10 +00:00
teken Sync HPA and VPA implementations with CUP. 2015-08-24 07:49:27 +00:00
tools
ufs By doing file extension fast, it is possible to create excess supply 2015-09-01 13:07:27 +00:00
vm Don't trash memory from UMA_ZONE_NOFREE zones. 2015-09-02 23:09:01 +00:00
x86 Add missing ofw_machdep.h. Make x86 ofw_machdep.h work pc98 too. 2015-08-28 15:41:09 +00:00
xdr
xen xen: allow disabling PV disks and nics 2015-08-21 15:53:08 +00:00
Makefile Kill EoL whitespace. 2015-05-29 14:03:07 +00:00