[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#694901: unblock: manpages/3.44-1



Hi,

On Mon, Dec 03, 2012 at 09:18:56PM +0100, Julien Cristau wrote:
> On Sat, Dec  1, 2012 at 19:07:00 -0400, David Prévot wrote:
> > Package: release.debian.org
> > Severity: normal
> > User: release.debian.org@packages.debian.org
> > Usertags: unblock
> > 
> > Please unblock package manpages, it fixes an important issue in the
> > Debian-specific part of the package (#691414, see motd.5.diff attached).
> > 
> The debian/inst changes,

See debdiff against binaries attached:
* motd.tail.5 removed as per #691414
* upstream announce we ship as is
* 1 new manpage, 2 new links to existing manpages

So as expected, no functional change, and sorry if it looked spurious.

> and the s/3.42/3.44/g, tend to make me sad.

Here is a filtered diff (I can share the git branches where I did that),
removing :
* upstream Changelog
* upstream s/3.42/3.44/
* date updates (grepping out "Linux Programmer's Manual")
* formatting/groff/typo fixs, like but not limited to (patch reversed on by one based on upstream repo):
	* groff fix
	  http://git.kernel.org/?p=docs/man-pages/man-pages.git;a=commitdiff;h=ca8a0bd25b46ff1b
	* Upper case titles
	  http://git.kernel.org/?p=docs/man-pages/man-pages.git;a=commitdiff;h=f68512e9feb15ede
	* english fix
	  http://git.kernel.org/?p=docs/man-pages/man-pages.git;a=commitdiff;h=7fac88a949c7fdf5

This should make the diff more readable, still substantial for a doc (and
risk-free :-) udpate.

Thanks in advance.

-- 
Simon Paillard
diff --git a/Makefile b/Makefile
index f5229c5..2f9ba8f 100644
--- a/Makefile
+++ b/Makefile
@@ -55,5 +55,18 @@ install:
 		install -m 644 "$$i"/* $(DESTDIR)$(MANDIR)/"$$i" || exit $$?; \
 	done; \
 
+# Check if groff reports warnings (may be words of sentances not displayed)
+# from http://lintian.debian.org/tags/manpage-has-errors-from-man.html 
+GROFF_LOG := $(shell mktemp /tmp/manpages-checksXXXX)
+check-groff-warnings:
+	for i in man?/*.[1-9]; \
+	do \
+		if grep -q 'SH.*NAME' $$i; then \
+			LC_ALL=en_US.UTF-8 MANWIDTH=80 man --warnings -E UTF-8 -l $$i > /dev/null 2>$(GROFF_LOG); \
+			[ -s $(GROFF_LOG) ] && ( echo "$$i: " ; cat $(GROFF_LOG) ; echo "" ); \
+			rm $(GROFF_LOG) 2>/dev/null; \
+		fi \
+	done
+
 # someone might also want to look at /var/catman/cat2 or so ...
 # a problem is that the location of cat pages varies a lot
diff --git a/debian/changelog b/debian/changelog
index b6e7108..a2c03de 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,23 @@
+manpages (3.44-1) unstable; urgency=low
+
+  * Imported Upstream version 3.44: (Closes: #692595)
+    . new manpages: getauxval.3 secure_getenv.3
+    . major update to delete_module.2 init_module.2 prctl.2 getauxval.3 proc.5
+    . fts.3: Improve description of physical vs. logical (Closes: #633505)
+    . getdomainname.2: these calls relate to NIS, not DNS (Closes: #295635)
+    . proc.5: fix 'starttime' description of /proc/PID/stat (Closes: #675891)
+    . ptrace.2: Clarify some operations are not present on all
+      architectures (Closes: #122383)
+  * motd.5 updated and motd.tail removed: due to new behaviour of sysvinit
+    2.88dsf-24 (Closes: #691414)
+  * Add glibc-doc-reference to package description (Closes: #640764)
+  * fputs.3: missing space in putc(c,stdout) (Closes: #693255)
+  * resolv.conf.5: Document IPv6 format for nameserver (Closes: #610036)
+  * stat.2: Clarify description of EOVERFLOW error (Closes: #604928)
+  * Ack my NMUs (Closes: #651476, #670874)
+
+ -- Simon Paillard <spaillard@debian.org>  Fri, 16 Nov 2012 19:56:48 +0100
+
 manpages (3.42-1) unstable; urgency=low
 
   [ Simon Paillard ]
diff --git a/debian/check-conflicts b/debian/check-conflicts
new file mode 100755
index 0000000..622515f
--- /dev/null
+++ b/debian/check-conflicts
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+BASEMAN="/usr/share/man"
+
+which apt-file >/dev/null 2>&1
+if [ $? -ne 0 ] ; then
+	echo "apt-file is required" 1>&2 ;
+       	exit 1
+fi
+
+echo -e "WARNING: This tool assumes apt-file has been updated based on sid\n" 1>&2 ; 
+
+
+for j in man*/*.* ;
+	do (dpkg -S "$BASEMAN/$j.gz" 2>/dev/null || apt-file search "$BASEMAN/$j.gz") \
+		| grep -v '^manpages:' \
+		| grep -v '^manpages-dev:' ;
+done
diff --git a/debian/control b/debian/control
index cbdac23..8503a85 100644
--- a/debian/control
+++ b/debian/control
@@ -5,8 +5,8 @@ Uploaders: Simon Paillard <spaillard@debian.org>
 Priority: important
 Build-Depends: debhelper (>= 7)
 Standards-Version: 3.9.3
-Vcs-Browser: http://cvs.infodrom.org/manpages/?cvsroot=debian
-Vcs-CVS: :pserver:anonymous@cvs.infofrom.org:/var/cvs/debian manpages
+Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/manpages.git
+Vcs-Git: git://anonscm.debian.org/collab-maint/manpages.git
 Homepage: http://www.kernel.org/doc/man-pages/
 
 Package: manpages
@@ -39,4 +39,4 @@ Description: Manual pages about using GNU/Linux for development
  these two sections:
   2 = Linux system calls.
   3 = Library calls (note that a more comprehensive source of information
-      may be found in the glibc-doc package).
+      may be found in the glibc-doc and glibc-doc-reference packages).
diff --git a/debian/inst b/debian/inst
index 260e517..5ec1f7a 100644
--- a/debian/inst
+++ b/debian/inst
@@ -15,13 +15,15 @@ for i in man[145678]; do
 	for j in $i/*.*; do
 		echo -n ${j#*/}
 		case ${j#*/} in
-		time.1|ldd.1|\
+		time.1|\
 		console.4|fd.4|fstab.5|ftpusers.5|lilo.conf.5|nfs.5|exports.5|ttytype.5|\
-		passwd.5|lilo.8|zic.8|zdump.8|ldconfig.8|nscd.conf.5|nscd.8|\
-		mdoc.samples.7|environ.5|\
-		ld.so.8) 
+		passwd.5|lilo.8|zic.8|zdump.8|\
+		mdoc.samples.7|environ.5)
 			echo -n "(skipped)"
 			;; 
+		ldd.1|ldconfig.8|ld.so.8|nscd.conf.5|nscd.8)
+			echo -n "(skipped, provided by eglibc)"
+			;; 
 		*)
 			read Y < $j 
 			case "$Y" in
@@ -63,11 +65,13 @@ for i in man[23]; do
 		case ${j#*/} in
 		intro.*)
 			;;
-		infnan.3|fgetxattr.2|flistxattr.2|fremovexattr.2|fsetxattr.2|\
+		infnan.3|query_module.2|set_mempolicy.2)
+			echo -n "(skipped)"
+			;; 
+		fgetxattr.2|flistxattr.2|fremovexattr.2|fsetxattr.2|\
 		getxattr.2|lgetxattr.2|listxattr.2|llistxattr.2|lremovexattr.2|\
-		query_module.2|set_mempolicy.2|\
 		lsetxattr.2|removexattr.2|setxattr.2)
-			echo -n "(skipped)"
+			echo -n "(skipped, provided by libattr1-dev)"
 			;; 
 		*)
 			read Y < $j 
diff --git a/man2/clock_getres.2 b/man2/clock_getres.2
index 184a3cc..41f762d 100644
--- a/man2/clock_getres.2
+++ b/man2/clock_getres.2
@@ -40,7 +40,7 @@ clock_getres, clock_gettime, clock_settime \- clock and time functions
 
 .BI "int clock_settime(clockid_t " clk_id ", const struct timespec *" tp );
 .sp
-Link with \fI\-lrt\fP.
+Link with \fI\-lrt\fP (only for glibc versions before 2.17).
 .sp
 .in -4n
 Feature Test Macro Requirements for glibc (see
diff --git a/man2/clock_nanosleep.2 b/man2/clock_nanosleep.2
index 59fc366..5f32b20 100644
--- a/man2/clock_nanosleep.2
+++ b/man2/clock_nanosleep.2
@@ -32,7 +32,7 @@ clock_nanosleep \- high-resolution sleep with specifiable clock
 .BI "                    struct timespec *" remain );
 .fi
 .sp
-Link with \fI\-lrt\fP.
+Link with \fI\-lrt\fP (only for glibc versions before 2.17).
 .sp
 .ad l
 .in -4n
@@ -205,7 +205,7 @@ flag.
 is never restarted after being interrupted by a signal handler,
 regardless of the use of the
 .BR sigaction (2)
-.B SA_SIGACTION
+.B SA_RESTART
 flag.
 
 The
diff --git a/man2/create_module.2 b/man2/create_module.2
index 9a59cf1..46234f4 100644
--- a/man2/create_module.2
+++ b/man2/create_module.2
@@ -14,6 +14,9 @@ create_module \- create a loadable module entry
 .BI "caddr_t create_module(const char *" name ", size_t " size );
 .fi
 .SH DESCRIPTION
+.BR Note :
+This system call is present only in kernels before Linux 2.6.
+
 .BR create_module ()
 attempts to create a loadable module entry and reserve the kernel memory
 that will be needed to hold the module.
@@ -41,7 +44,8 @@ enough for the module.
 .TP
 .B ENOSYS
 .BR create_module ()
-is not supported in this version of the kernel.
+is not supported in this version of the kernel
+(e.g., the kernel is version 2.6 or later).
 .TP
 .B EPERM
 The caller was not privileged
diff --git a/man2/delete_module.2 b/man2/delete_module.2
index 7095197..89d15de 100644
--- a/man2/delete_module.2
+++ b/man2/delete_module.2
@@ -1,4 +1,5 @@
 .\" Copyright (C) 1996 Free Software Foundation, Inc.
+.\" and Copyright (C) 2012 Michael Kerrisk <mtk.manpages@gmail.com>
 .\" This file is distributed according to the GNU General Public License.
 .\" See the file COPYING in the top level source directory for details.
 .\"
@@ -6,21 +7,104 @@
 .\" reformatting and rewordings by mtk
 .\"
 .SH NAME
-delete_module \- delete a loadable module entry
+delete_module \- unload a kernel module
 .SH SYNOPSIS
 .nf
-.B #include <linux/module.h>
-.sp
-.BI "int delete_module(const char *" name );
+.BI "int delete_module(const char *" name ", int " flags );
 .fi
+
+.IR Note :
+There is no glibc wrapper for this system call; see NOTES.
 .SH DESCRIPTION
+The
 .BR delete_module ()
-attempts to remove an unused loadable module entry.
-If
-.I name
-is NULL,
-all unused modules marked auto-clean will be removed.
+system call attempts to remove the unused loadable module entry
+identified by
+.IR name .
+If the module has an
+.I exit
+function, then that function is executed before unloading the module.
+The
+.IR flags
+argument is used to modify the behavior of the system call,
+as described below.
 This system call requires privilege.
+
+Module removal is attempted according to the following rules:
+.IP 1. 4
+If there are other loaded modules that depend on
+(i.e., refer to symbols defined in) this module,
+then the call fails.
+.IP 2.
+Otherwise, if the reference count for the module
+(i.e., the  number  of processes currently using the module)
+is zero, then the module is immediately unloaded.
+.IP 3.
+If a module has a nonzero reference count,
+then the behavior depends on the bits set in
+.IR flags .
+In normal usage (see NOTES), the
+.BR O_NONBLOCK
+flag is always specified, and the
+.BR O_TRUNC
+flag may additionally be specified.
+.\"  	O_TRUNC == KMOD_REMOVE_FORCE in kmod library
+.\"  	O_NONBLOCK == KMOD_REMOVE_NOWAIT in kmod library
+
+The various combinations for
+.I flags
+have the following effect:
+.RS 4
+.TP
+.B flags == O_NONBLOCK
+The call returns immediately, with an error.
+.TP
+.B flags == (O_NONBLOCK | O_TRUNC)
+The module is unloaded immediately,
+regardless of whether it has a nonzero reference count.
+.TP
+.B (flags & O_NONBLOCK) == 0
+If
+.I flags
+does not specify
+.BR O_NONBLOCK ,
+the following steps occur:
+.RS
+.IP * 3
+The module is marked so that no new references are permitted.
+.IP *
+If the module's reference count is nonzero,
+the caller is placed in an uninterruptible sleep state
+.RB ( TASK_UNINTERRUPTIBLE )
+until the reference count is zero, at which point the call unblocks.
+.IP *
+The module is unloaded in the usual way.
+.RE
+.RE
+.PP
+The
+.B O_TRUNC
+flag has one further effect on the rules described above.
+By default,
+attempting to remove a module that has an
+.I init
+function but no
+.I exit
+function fails.
+However, if
+.BR O_TRUNC
+was specified, this requirement is bypassed.
+.PP
+Using the
+.B O_TRUNC
+flag is dangerous!
+If the kernel was not built with
+.BR CONFIG_MODULE_FORCE_UNLOAD ,
+this flag is silently ignored.
+(Normally ,
+.BR CONFIG_MODULE_FORCE_UNLOAD
+is enabled.)
+Using this flag taints the kernel (TAINT_FORCED_RMMOD).
 .SH "RETURN VALUE"
 On success, zero is returned.
 On error, \-1 is returned and
@@ -29,15 +113,22 @@ is set appropriately.
 .SH ERRORS
 .TP
 .B EBUSY
-The module is in use.
+The module is not "live"
+(i.e., it is still being initialized or is already marked for removal);
+or, the module has
+an
+.I init
+function but has no
+.I exit
+function, and
+.B O_TRUNC
+was not specified in
+.IR flags .
+
 .TP
 .B EFAULT
 .I name
-is outside the program's accessible address space.
-.TP
-.B EINVAL
-.I name
-was an empty string.
+refers to a location outside the process's accessible address space.
 .TP
 .B ENOENT
 No module by that name exists.
@@ -46,11 +137,57 @@ No module by that name exists.
 The caller was not privileged
 (did not have the
 .B CAP_SYS_MODULE
-capability).
+capability),
+or module unloading is disabled
+(see
+.IR /proc/sys/kernel/modules_disabled
+in
+.BR proc (5)).
+.TP
+.B EWOULDBLOCK
+Other modules depend on this module;
+or,
+.BR O_NONBLOCK
+was specified in
+.IR flags ,
+but the reference count of this module is nonzero and
+.B O_TRUNC
+was not specified in
+.IR flags .
 .SH "CONFORMING TO"
 .BR delete_module ()
 is Linux-specific.
+.SH NOTES
+Glibc does not provide a wrapper for this system call; call it using
+.BR syscall (2).
+
+The unininterruptible sleep that may occur if
+.BR O_NONBLOCK
+is omitted from
+.IR flags
+is considered undesirable, because the sleeping process is left
+in an unkillable state.
+As at Linux 3.7, specifying
+.BR O_NONBLOCK
+is optional, but in future kernels it is likely to become mandatory.
+.SS Linux 2.4 and earlier
+In Linux 2.4 and earlier, the system call took only one argument:
+
+.BI "   int delete_module(const char *" name );
+
+If
+.I name
+is NULL, all unused modules marked auto-clean are removed.
+
+Some further details of differences in the behavior of
+.BR delete_module ()
+in Linux 2.4 and earlier are
+.I not
+currently explained in this manual page.
 .SH "SEE ALSO"
 .BR create_module (2),
 .BR init_module (2),
-.BR query_module (2)
+.BR query_module (2),
+.BR lsmod (8),
+.BR modprobe (8),
+.BR rmmod (8)
diff --git a/man2/epoll_wait.2 b/man2/epoll_wait.2
index 4e8c380..ecf683f 100644
--- a/man2/epoll_wait.2
+++ b/man2/epoll_wait.2
@@ -197,6 +197,25 @@ If the new file descriptor becomes ready,
 it will cause the
 .BR epoll_wait ()
 call to unblock.
+
+For a discussion of what may happen if a file descriptor in an
+.B epoll
+instance being monitored by
+.BR epoll_wait ()
+is closed in another thread, see
+.BR select (2).
+.SH BUGS
+In kernels before 2.6.37, a
+.I timeout
+value larger than approximately
+.I LONG_MAX / HZ
+milliseconds is treated as \-1 (i.e., infinity).
+Thus, for example, on a system where the
+.I sizeof(long)
+is 4 and the kernel
+.I HZ
+value is 1000,
+this means that timeouts greater than 35.79 minutes are treated as infinity.
 .SH "SEE ALSO"
 .BR epoll_create (2),
 .BR epoll_ctl (2),
diff --git a/man2/execve.2 b/man2/execve.2
index 5692dd2..43cb2fc 100644
--- a/man2/execve.2
+++ b/man2/execve.2
@@ -178,6 +178,13 @@ The
 .B PR_SET_KEEPCAPS
 flag is cleared.
 .IP *
+(Since Linux 2.4.36 / 2.6.23)
+If a set-user-ID or set-group-ID program is being executed,
+then the parent death signal set by
+.BR prctl (2)
+.B PR_SET_PDEATHSIG
+flag is cleared.
+.IP *
 The process name, as set by
 .BR prctl (2)
 .B PR_SET_NAME
@@ -185,6 +192,13 @@ The process name, as set by
 .IR "ps\ \-o comm" ),
 is reset to the name of the new executable file.
 .IP *
+The
+.B SECBIT_KEEP_CAPS
+.I securebits
+flag is cleared.
+See
+.BR capabilities (7).
+.IP *
 The termination signal is reset to
 .B SIGCHLD
 (see
diff --git a/man2/fork.2 b/man2/fork.2
index 7c7ab17..0c4c85b 100644
--- a/man2/fork.2
+++ b/man2/fork.2
@@ -104,6 +104,13 @@ The
 setting is reset so that the child does not receive a signal
 when its parent terminates.
 .IP *
+The default timer slack value is set to the parent's
+current timer slack value.
+See the description of
+.BR PR_SET_TIMERSLACK
+in
+.BR prctl (2).
+.IP *
 Memory mappings that have been marked with the
 .BR madvise (2)
 .B MADV_DONTFORK
diff --git a/man2/get_kernel_syms.2 b/man2/get_kernel_syms.2
index 48946a8..1762b8b 100644
--- a/man2/get_kernel_syms.2
+++ b/man2/get_kernel_syms.2
@@ -14,6 +14,9 @@ get_kernel_syms \- retrieve exported kernel and module symbols
 .BI "int get_kernel_syms(struct kernel_sym *" table );
 .fi
 .SH DESCRIPTION
+.BR Note :
+This system call is present only in kernels before Linux 2.6.
+
 If
 .I table
 is NULL,
diff --git a/man2/getdomainname.2 b/man2/getdomainname.2
index 0a71ea4..f37c904 100644
--- a/man2/getdomainname.2
+++ b/man2/getdomainname.2
@@ -27,7 +27,7 @@
 .\" Modified 2008-11-27 by mtk
 .\"
 .SH NAME
-getdomainname, setdomainname \- get/set domain name
+getdomainname, setdomainname \- get/set NIS domain name
 .SH SYNOPSIS
 .B #include <unistd.h>
 .sp
@@ -48,7 +48,7 @@ _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
 .RE
 .ad
 .SH DESCRIPTION
-These functions are used to access or to change the domain name of the
+These functions are used to access or to change the NIS domain name of the
 host system.
 
 .BR setdomainname ()
diff --git a/man2/getitimer.2 b/man2/getitimer.2
index 52a341b..41dfcdb 100644
--- a/man2/getitimer.2
+++ b/man2/getitimer.2
@@ -52,8 +52,8 @@ struct itimerval {
 };
 
 struct timeval {
-    long tv_sec;                /* seconds */
-    long tv_usec;               /* microseconds */
+    time_t      tv_sec;         /* seconds */
+    suseconds_t tv_usec;        /* microseconds */
 };
 .fi
 .in
@@ -165,6 +165,21 @@ and the three interfaces
 and
 .BR usleep (3)
 unspecified.
+
+The standards are silent on the meaning of the call:
+
+    setitimer(which, NULL, &old_value);
+
+Many systems (Solaris, the BSDs, and perhaps others)
+treat this as equivalent to:
+
+    getitimer(which, &old_value);
+
+In Linux, this is treated as being equivalent to a call in which the
+.I new_value
+fields are zero; that is, the timer is disabled.
+.IR "Don't use this Linux misfeature" :
+it is nonportable and unnecessary.
 .SH BUGS
 The generation and delivery of a signal are distinct, and
 only one instance of each of the signals listed above may be pending
diff --git a/man2/init_module.2 b/man2/init_module.2
index 45eef11..4f27a7e 100644
--- a/man2/init_module.2
+++ b/man2/init_module.2
@@ -1,4 +1,5 @@
 .\" Copyright (C) 1996 Free Software Foundation, Inc.
+.\" and Copyright (C) 2012 Michael Kerrisk <mtk.manpages@gmail.com>
 .\" This file is distributed according to the GNU General Public License.
 .\" See the file COPYING in the top level source directory for details.
 .\"
@@ -6,23 +7,167 @@
 .\" reformatting and rewordings by mtk
 .\"
 .SH NAME
-init_module \- initialize a loadable module entry
+init_module \- load a kernel module
 .SH SYNOPSIS
 .nf
-.B #include <linux/module.h>
-.sp
-.BI "int init_module(const char *" name ", struct module *" image );
+.BI "int init_module(void *" module_image ", unsigned long " len ,
+.BI "                const char *" param_values );
 .fi
+
+.IR Note :
+There is no glibc wrapper for this system call; see NOTES.
 .SH DESCRIPTION
 .BR init_module ()
-loads the relocated module image into kernel space and runs the
-module's
+loads an ELF image into kernel space,
+performs any necessary symbol relocations,
+initializes module parameters to values provided by the caller,
+and then runs the module's
+.I init
+function.
+This system call requires privilege.
+
+The
+.I module_image
+argument points to a buffer containing the binary image
+to be loaded;
+.I len
+specifies the size of that buffer.
+The module image should be a valid ELF image, built for the running kernel.
+
+The
+.I param_values
+argument is a string containing space-delimited specifications of the
+values for module parameters (defined inside the module using
+.BR module_param ()
+and
+.BR module_param_array ()).
+The kernel parses this string and initializes the specified
+parameters.
+Each of the parameter specifications has the form:
+
+.RI "        " name [\c
+.BI = value\c
+.RB [ ,\c
+.IR value ...]]
+
+The parameter
+.I name
+is one of those defined within the module using
+.IR module_param ()
+(see the Linux kernel source file
+.IR include/linux/moduleparam.h ).
+The parameter
+.I value
+is optional in the case of
+.I bool
+and
+.I invbool
+parameters.
+Values for array parameters are specified as a comma-separated list.
+.SH "RETURN VALUE"
+On success, zero is returned.
+On error, \-1 is returned and
+.I errno
+is set appropriately.
+.SH ERRORS
+.TP
+.B EBUSY
+Timeout while trying to resolve a symbol reference by this module.
+.TP
+.B EEXIST
+A module with this name is already loaded.
+.TP
+.B EFAULT
+An address argument referred to a location that
+is outside the process's accessible address space.
+.TP
+.B EINVAL
+.I param_values
+is invalid, or some part of the ELF image in
+.IR module_image
+contains inconsistencies.
+.\" .TP
+.\" .BR EINVAL " (Linux 2.4 and earlier)"
+.\" Some
+.\" .I image
+.\" slot is filled in incorrectly,
+.\" .I image\->name
+.\" does not correspond to the original module name, some
+.\" .I image\->deps
+.\" entry does not correspond to a loaded module,
+.\" or some other similar inconsistency.
+.TP
+.B ENOEXEC
+The binary image supplied in
+.I module_image
+is not an ELF image,
+or is an ELF image that is invalid or for a different architecture.
+.TP
+.B EPERM
+The caller was not privileged
+(did not have the
+.B CAP_SYS_MODULE
+capability),
+or module loading is disabled
+(see
+.IR /proc/sys/kernel/modules_disabled
+in
+.BR proc (5)).
+.PP
+In addition to the above errors, if the module's
+.I init
+function is executed and returns an error, then
+.BR init_module ()
+fails and
+.I errno
+is set to the value returned by the
+.I init
+function.
+.SH "CONFORMING TO"
+.BR init_module ()
+is Linux-specific.
+.SH NOTES
+Glibc does not provide a wrapper for this system call; call it using
+.BR syscall (2).
+
+Information about currently loaded modules can be found in
+.IR /proc/modules
+and in the file trees under the per-module subdirectories under
+.IR /sys/module .
+
+See the Linux kernel source file
+.I include/linux/module.h
+for some useful background information.
+.SS Linux 2.4 and earlier
+.PP
+In Linux 2.4 and earlier, this system call was rather different:
+
+.B "    #include <linux/module.h>"
+
+.BI "    int init_module(const char *" name ", struct module *" image );
+
+(User-space applications can detect which version of
+.BR init_module ()
+is available by calling
+.BR query_module ();
+the latter call fails with the error
+.BR ENOSYS
+on Linux 2.6 and later.)
+
+The older version of the system call
+loads the relocated module image pointed to by
+.I image
+into kernel space and runs the module's
 .I init
 function.
+The caller is responsible for providing the relocated image (since
+Linux 2.6, the
+.BR init_module ()
+system call does the relocation).
 .PP
 The module image begins with a module structure and is followed by
 code and data as appropriate.
-The module structure is defined as follows:
+Since Linux 2.2, the module structure is defined as follows:
 .PP
 .in +4n
 .nf
@@ -56,46 +201,9 @@ and
 are expected to point within the module body and be
 initialized as appropriate for kernel space, that is, relocated with
 the rest of the module.
-.PP
-This system call requires privilege.
-.SH "RETURN VALUE"
-On success, zero is returned.
-On error, \-1 is returned and
-.I errno
-is set appropriately.
-.SH ERRORS
-.TP
-.B EBUSY
-The module's initialization routine failed.
-.TP
-.B EFAULT
-.I name
-or
-.I image
-is outside the program's accessible address space.
-.TP
-.B EINVAL
-Some
-.I image
-slot is filled in incorrectly,
-.I image\->name
-does not correspond to the original module name, some
-.I image\->deps
-entry does not correspond to a loaded module,
-or some other similar inconsistency.
-.TP
-.B ENOENT
-No module by that name exists.
-.TP
-.B EPERM
-The caller was not privileged
-(did not have the
-.B CAP_SYS_MODULE
-capability).
-.SH "CONFORMING TO"
-.BR init_module ()
-is Linux-specific.
 .SH "SEE ALSO"
 .BR create_module (2),
 .BR delete_module (2),
-.BR query_module (2)
+.BR query_module (2),
+.BR lsmod (8),
+.BR modprobe (8)
diff --git a/man2/ipc.2 b/man2/ipc.2
index 7b879fb..d0c39c2 100644
--- a/man2/ipc.2
+++ b/man2/ipc.2
@@ -47,7 +47,7 @@ Only standard library implementors and kernel hackers need to know about
 is Linux-specific, and should not be used in programs
 intended to be portable.
 .SH NOTES
-On a few architectures, for example ia64, there is no
+On a some architectures\(emfor example x86-46 and ARM\(emthere is no
 .BR ipc ()
 system call; instead
 .BR msgctl (2),
diff --git a/man2/keyctl.2 b/man2/keyctl.2
index fcb30ab..f0dd607 100644
--- a/man2/keyctl.2
+++ b/man2/keyctl.2
@@ -124,47 +124,25 @@ When linking,
 should be specified to the linker.
 .SH SEE ALSO
 .BR keyctl (1),
-.br
 .BR add_key (2),
-.br
 .BR request_key (2),
-.br
-.BR keyctl_get_keyring_ID (3),
-.br
-.BR keyctl_join_session_keyring (3),
-.br
-.BR keyctl_update (3),
-.br
-.BR keyctl_revoke (3),
-.br
+.BR keyctl_set_timeout (3),
 .BR keyctl_chown (3),
-.br
-.BR keyctl_setperm (3),
-.br
-.BR keyctl_describe (3),
-.br
 .BR keyctl_clear (3),
-.br
-.BR keyctl_link (3),
-.br
-.BR keyctl_unlink (3),
-.br
-.BR keyctl_search (3),
-.br
-.BR keyctl_read (3),
-.br
+.BR keyctl_describe (3),
+.BR keyctl_describe_alloc (3),
+.BR keyctl_get_keyring_ID (3),
 .BR keyctl_instantiate (3),
-.br
+.BR keyctl_join_session_keyring (3),
+.BR keyctl_link (3),
 .BR keyctl_negate (3),
-.br
+.BR keyctl_revoke (3),
+.BR keyctl_search (3),
+.BR keyctl_setperm (3),
 .BR keyctl_set_reqkey_keyring (3),
-.br
 .BR keyctl_set_timeout (3),
-.br
-.BR keyctl_assume_authority (3),
-.br
-.BR keyctl_describe_alloc (3),
-.br
+.BR keyctl_read (3),
 .BR keyctl_read_alloc (3),
-.br
+.BR keyctl_unlink (3),
+.BR keyctl_update (3),
 .BR request-key (8)
diff --git a/man2/link.2 b/man2/link.2
index 9189bc2..c7431cc 100644
--- a/man2/link.2
+++ b/man2/link.2
@@ -114,6 +114,13 @@ The file system containing
 .IR oldpath " and " newpath
 does not support the creation of hard links.
 .TP
+.BR EPERM " (since Linux 3.6)"
+The caller does not have permission to create a hard link to this file
+(see the description of
+.IR /proc/sys/fs/protected_hardlink
+in
+.BR proc (5)).
+.TP
 .B EROFS
 The file is on a read-only file system.
 .TP
diff --git a/man2/phys.2 b/man2/phys.2
new file mode 100644
index 0000000..5d25ea6
--- /dev/null
+++ b/man2/phys.2
@@ -0,0 +1 @@
+.so man2/unimplemented.2
diff --git a/man2/poll.2 b/man2/poll.2
index 49f822f..f61ce0b 100644
--- a/man2/poll.2
+++ b/man2/poll.2
@@ -339,6 +339,11 @@ with the value \-1 for use as a
 for
 .BR poll ().
 This constant is not provided in glibc.
+
+For a discussion of what may happen if a file descriptor being monitored by
+.BR poll ()
+is closed in another thread, see
+.BR select (2).
 .SS "Linux Notes"
 The Linux
 .BR ppoll ()
diff --git a/man2/prctl.2 b/man2/prctl.2
index 65ced9e..ce7a4dd 100644
--- a/man2/prctl.2
+++ b/man2/prctl.2
@@ -41,9 +41,11 @@
 .\" 2012-04 Cyrill Gorcunov, Document PR_SET_MM
 .\" 2012-04-25 Michael Kerrisk, Document PR_TASK_PERF_EVENTS_DISABLE and
 .\"				PR_TASK_PERF_EVENTS_ENABLE
+.\" 2012-09-20 Kees Cook, update PR_SET_SECCOMP for mode 2
+.\" 2012-09-20 Kees Cook, document PR_SET_NO_NEW_PRIVS, PR_GET_NO_NEW_PRIVS
+.\" 2012-10-25 Michael Kerrisk, Document PR_SET_TIMERSLACK and
+.\"                             PR_GET_TIMERSLACK
 .\"
-.\" FIXME: Document PR_SET_TIMERSLACK and PR_GET_TIMERSLACK (new in 2.6.28)
-.\"		commit 6976675d94042fbd446231d1bd8b7de71a980ada
 .\"
 .SH NAME
 prctl \- operations on a process
@@ -200,7 +202,7 @@ Return (as the function result) the current state of the calling threads's
 "keep capabilities" flag.
 .TP
 .BR PR_SET_NAME " (since Linux 2.6.9)"
-Set the process name for the calling process,
+Set the process name for the calling thread,
 using the value in the location pointed to by
 .IR "(char\ *) arg2" .
 The name can be up to 16 bytes long,
@@ -208,12 +210,49 @@ The name can be up to 16 bytes long,
 and should be null-terminated if it contains fewer bytes.
 .TP
 .BR PR_GET_NAME " (since Linux 2.6.11)"
-Return the process name for the calling process,
+Return the name for the calling thread,
 in the buffer pointed to by
 .IR "(char\ *) arg2" .
 The buffer should allow space for up to 16 bytes;
 the returned string will be null-terminated if it is shorter than that.
 .TP
+.BR PR_SET_NO_NEW_PRIVS " (since Linux 3.5)"
+Set the calling process's
+.I no_new_privs
+bit to the value in
+.IR arg2 .
+With
+.I no_new_privs
+set to 1,
+.BR execve (2)
+promises not to grant privileges to do anything
+that could not have been done without the
+.BR execve (2)
+call (for example,
+rendering the set-user-ID and set-group-ID permission bits,
+and file capabilities non-functional).
+Once set, this bit cannot be unset.
+The setting of this bit is inherited by children created by
+.BR fork (2)
+and
+.BR clone (2),
+and preserved across
+.BR execve (2).
+
+For more information, see the kernel source file
+.IR Documentation/prctl/no_new_privs.txt .
+.TP
+.BR PR_GET_NO_NEW_PRIVS " (since Linux 3.5)"
+Return the value of the
+.I no_new_privs
+bit for the current process.
+A value of 0 indicates the regular
+.BR execve (2)
+behavior.
+A value of 1 indicates
+.BR execve (2)
+will operate in the privilege-restricting mode described above.
+.TP
 .BR PR_SET_PDEATHSIG " (since Linux 2.1.57)"
 Set the parent process death signal
 of the calling process to \fIarg2\fP (either a signal value
@@ -223,7 +262,7 @@ parent dies.
 This value is cleared for the child of a
 .BR fork (2)
 and (since Linux 2.5.36 / 2.6.23)
-when executing a set-user_ID or set-group-ID binary.
+when executing a set-user-ID or set-group-ID binary.
 .TP
 .BR PR_GET_PDEATHSIG " (since Linux 2.3.15)"
 Return the current value of the parent process death signal,
@@ -234,11 +273,17 @@ in the location pointed to by
 .\" See http://thread.gmane.org/gmane.linux.kernel/542632
 .\" [PATCH 0 of 2] seccomp updates
 .\" andrea@cpushare.com
-Set the secure computing mode for the calling thread.
-In the current implementation,
+Set the secure computing (seccomp) mode for the calling thread, to limit
+the available system calls.
+The seccomp mode is selected via
+.IR arg2 .
+(The seccomp constants are defined in
+.IR <linux/seccomp.h> .)
+
+With
 .IR arg2
-must be 1.
-After the secure computing mode has been set to 1,
+set to
+.BR SECCOMP_MODE_STRICT
 the only system calls that the thread is permitted to make are
 .BR read (2),
 .BR write (2),
@@ -248,24 +293,61 @@ and
 Other system calls result in the delivery of a
 .BR SIGKILL
 signal.
-Secure computing mode is useful for number-crunching applications
+Strict secure computing mode is useful for number-crunching applications
 that may need to execute untrusted byte code,
 perhaps obtained by reading from a pipe or socket.
 This operation is only available
-if the kernel is configured with CONFIG_SECCOMP enabled.
+if the kernel is configured with
+.B CONFIG_SECCOMP
+enabled.
+
+With
+.IR arg2
+set to
+.BR SECCOMP_MODE_FILTER " (since Linux 3.5)"
+the system calls allowed are defined by a pointer
+to a Berkeley Packet Filter passed in
+.IR arg3 .
+This argument is a pointer to
+.IR "struct sock_fprog" ;
+it can be designed to filter
+arbitrary system calls and system call arguments.
+This mode is only available if the kernel is configured with
+.B CONFIG_SECCOMP_FILTER
+enabled.
+
+If
+.BR SECCOMP_MODE_FILTER
+filters permit
+.BR fork (2),
+then the seccomp mode is inherited by children created by
+.BR fork (2);
+if
+.BR execve (2)
+is permitted, then the seccomp mode is preserved across
+.BR execve (2).
+If the filters permit
+.BR prctl (0
+calls, then additional filters can be added;
+they are run in order until the first non-allow result is seen.
+
+For further information, see the kernel source file
+.IR Documentation/prctl/seccomp_filter.txt .
 .TP
 .BR PR_GET_SECCOMP " (since Linux 2.6.23)"
 Return the secure computing mode of the calling thread.
-Not very useful for the current implementation (mode equals 1),
-but may be useful for other possible future modes:
-if the caller is not in secure computing mode, this operation returns 0;
-if the caller is in secure computing mode, then the
+If the caller is not in secure computing mode, this operation returns 0;
+if the caller is in strict secure computing mode, then the
 .BR prctl ()
 call will cause a
 .B SIGKILL
 signal to be sent to the process.
+If the caller is in filter mode, and this system call is allowed by the
+seccomp filters, it returns 2.
 This operation is only available
-if the kernel is configured with CONFIG_SECCOMP enabled.
+if the kernel is configured with
+.B CONFIG_SECCOMP
+enabled.
 .TP
 .BR PR_SET_SECUREBITS " (since Linux 2.6.26)"
 Set the "securebits" flags of the calling thread to the value supplied in
@@ -279,6 +361,69 @@ the "securebits" flags of the calling thread.
 See
 .BR capabilities (7).
 .TP
+.BR PR_SET_TIMERSLACK " (since Linux 2.6.28)"
+.\" See https://lwn.net/Articles/369549/
+.\" commit 6976675d94042fbd446231d1bd8b7de71a980ada
+Set the current timer slack for the calling thread to the nanosecond value
+supplied in
+.IR arg2 .
+If
+.I arg2
+is less than or equal to zero,
+.\" It seems that it's not possible to set the timer slack to zero;
+.\" The minimum value is 1? Seems a little strange.
+reset the current timer slack to the thread's default timer slack value.
+The timer slack is used by the kernel to group timer expirations
+for the calling thread that are close to one another;
+as a consequence, timer expirations for the thread may be
+up to the specified number of nanoseconds late (but will never expire early).
+Grouping timer expirations can help reduce system power consumption
+by minimizing CPU wake-ups.
+
+The timer expirations affected by timer slack are those set by
+.BR select (2),
+.BR pselect (2),
+.BR poll (2),
+.BR ppoll (2),
+.BR epoll_wait (2),
+.BR epoll_pwait (2),
+.BR clock_nanosleep (2),
+.BR nanosleep (2),
+and
+.BR futex (2)
+(and thus the library functions implemented via futexes, including
+.\" List obtained by grepping for futex usage in glibc source
+.BR pthread_cond_timedwait (3),
+.BR pthread_mutex_timedlock (3),
+.BR pthread_rwlock_timedrdlock (3),
+.BR pthread_rwlock_timedwrlock (3),
+and
+.BR sem_timedwait (3)).
+
+Timer slack is not applied to threads that are scheduled under
+a realtime scheduling policy (see
+.BR sched_setscheduler (2)).
+
+Each thread has two associated timer slack values:
+a "default" value, and a "current" value.
+The current value is the one that governs grouping
+of timer expirations.
+When a new thread is created,
+the two timer slack values are made the same as the current value
+of the creating thread.
+Thereafter, a thread can adjust its current timer slack value via
+.BR PR_SET_TIMERSLACK
+(the default value can't be changed).
+The timer slack values of
+.IR init
+(PID 1), the ancestor of all processes,
+is 50,000 nanoseconds (50 microseconds).
+The timer slack values are preserved across
+.BR execve (2).
+.TP
+.BR PR_GET_TIMERSLACK " (since Linux 2.6.28)"
+Return the current timer slack value of the calling thread.
+.TP
 .BR PR_SET_TIMING " (since Linux 2.6.0-test4)"
 Set whether to use (normal, traditional) statistical process timing or
 accurate timestamp-based process timing, by passing
@@ -546,6 +691,7 @@ option.
 On success,
 .BR PR_GET_DUMPABLE ,
 .BR PR_GET_KEEPCAPS ,
+.BR PR_GET_NO_NEW_PRIVS ,
 .BR PR_CAPBSET_READ ,
 .BR PR_GET_TIMING ,
 .BR PR_GET_SECUREBITS ,
diff --git a/man2/ptrace.2 b/man2/ptrace.2
index 6db76be..b11354a 100644
--- a/man2/ptrace.2
+++ b/man2/ptrace.2
@@ -229,6 +229,10 @@ reversed; that is,
 .I data
 is ignored and the registers are copied to the address
 .IR addr .
+.B PTRACE_GETREGS
+and
+.B PTRACE_GETFPREGS
+are not present on all architectures.
 .TP
 .BR PTRACE_GETSIGINFO " (since Linux 2.3.99-pre6)"
 Retrieve information about the signal that caused the stop.
@@ -262,6 +266,10 @@ reversed; that is,
 .I data
 is ignored and the registers are copied from the address
 .IR addr .
+.B PTRACE_SETREGS
+and
+.B PTRACE_SETFPREGS
+are not present on all architectures.
 .TP
 .BR PTRACE_SETSIGINFO " (since Linux 2.3.99-pre6)"
 Set signal information:
@@ -504,9 +512,12 @@ The
 .I data
 argument is treated as for
 .BR PTRACE_CONT .
-.RI ( addr
-is ignored;
-not supported on all architectures.)
+The
+.I addr
+argument is ignored.
+These requests are currently
+.\" As at 3.7
+supported only on x89.
 .TP
 .B PTRACE_KILL
 Send the tracee a
diff --git a/man2/query_module.2 b/man2/query_module.2
index 2d8c3fd..669543b 100644
--- a/man2/query_module.2
+++ b/man2/query_module.2
@@ -15,6 +15,9 @@ query_module \- query the kernel for various bits pertaining to modules
 .BI "                 size_t " bufsize ", size_t *" ret );
 .fi
 .SH DESCRIPTION
+.BR Note :
+This system call is present only in kernels before Linux 2.6.
+
 .BR query_module ()
 requests information from the kernel about loadable modules.
 The returned information is placed in the buffer pointed to by
@@ -154,23 +157,27 @@ is set to the minimum size needed.
 .TP
 .B ENOSYS
 .BR query_module ()
-is not supported in this version of the kernel.
+is not supported in this version of the kernel
+(e.g., the kernel is version 2.6 or later).
+.SH VERSIONS
+This system call is only present on Linux up until kernel 2.4;
+it was removed in Linux 2.6.
+.\" Removed in Linux 2.5.48
 .SH "CONFORMING TO"
 .BR query_module ()
 is Linux-specific.
 .SH NOTES
-This system call is only present on Linux up until kernel 2.4;
-it was removed in Linux 2.6.
-.\" Removed in Linux 2.5.48
-Some of the information that was available via
+Some of the information that was formerly available via
 .BR query_module ()
 can be obtained from
 .IR /proc/modules ,
 .IR /proc/kallsyms ,
-and
-.IR /sys/modules .
+and the files under the directory
+.IR /sys/module .
 .SH "SEE ALSO"
 .BR create_module (2),
 .BR delete_module (2),
 .BR get_kernel_syms (2),
-.BR init_module (2)
+.BR init_module (2),
+.BR lsmod (8),
+.BR modinfo (8)
diff --git a/man2/select.2 b/man2/select.2
index 960259c..261fb97 100644
--- a/man2/select.2
+++ b/man2/select.2
@@ -204,9 +204,9 @@ executing the following calls:
 
     sigset_t origmask;
 
-    sigprocmask(SIG_SETMASK, &sigmask, &origmask);
+    pthread_sigmask(SIG_SETMASK, &sigmask, &origmask);
     ready = select(nfds, &readfds, &writefds, &exceptfds, timeout);
-    sigprocmask(SIG_SETMASK, &origmask, NULL);
+    pthread_sigmask(SIG_SETMASK, &origmask, NULL);
 .fi
 .PP
 The reason that
@@ -410,6 +410,22 @@ when
 .B _GNU_SOURCE
 is defined.
 Since glibc 2.2.2 the requirements are as shown in the SYNOPSIS.
+.SS Multithreaded applications
+If a file descriptor being monitored by
+.BR select ()
+is closed in another thread, the result is unspecified.
+On some UNIX systems,
+.BR select ()
+unblocks and returns, with an indication that the file descriptor is ready
+(a subsequent I/O operation will likely fail with an error,
+unless another the file descriptor reopened between the time
+.BR select ()
+returned and the I/O operations was performed).
+On Linux (and some other systems),
+closing the file descriptor in another thread has no effect on
+.BR select ().
+In summary, any application that relies on a particular behavior
+in this scenario must be considered buggy.
 .SS "Linux Notes"
 The
 .BR pselect ()
diff --git a/man2/semop.2 b/man2/semop.2
index dd7c333..1e24cf8 100644
--- a/man2/semop.2
+++ b/man2/semop.2
@@ -59,7 +59,7 @@ Each semaphore in a semaphore set has the following associated values:
 unsigned short  semval;   /* semaphore value */
 unsigned short  semzcnt;  /* # waiting for zero */
 unsigned short  semncnt;  /* # waiting for increase */
-pid_t           sempid;   /* process that did last op */
+pid_t           sempid;   /* ID of process that did last op */
 .sp
 .in -4n
 .fi
@@ -122,10 +122,10 @@ the semaphore value
 .RI  ( semval ).
 Furthermore, if
 .B SEM_UNDO
-is specified for this operation, the system updates the process undo count
+is specified for this operation, the system updates the undo count
 .RI ( semadj )
 for this semaphore.
-This operation can always proceed\(emit never forces a process to wait.
+This operation can always proceed\(emit never forces a thread to wait.
 The calling process must have alter permission on the semaphore set.
 .PP
 If
@@ -149,8 +149,8 @@ set to
 is performed).
 Otherwise
 .I semzcnt
-(the count of processes waiting until this semaphore's value becomes zero)
-is incremented by one and the process sleeps until
+(the count of threads waiting until this semaphore's value becomes zero)
+is incremented by one and the thread sleeps until
 one of the following occurs:
 .IP \(bu 3
 .I semval
@@ -166,7 +166,7 @@ fails, with
 set to
 .BR EIDRM .
 .IP \(bu
-The calling process catches a signal:
+The calling thread catches a signal:
 the value of
 .I semzcnt
 is decremented and
@@ -202,7 +202,7 @@ is subtracted from
 .IR semval ,
 and, if
 .B SEM_UNDO
-is specified for this operation, the system updates the process undo count
+is specified for this operation, the system updates the undo count
 .RI ( semadj )
 for this semaphore.
 If the absolute value of
@@ -223,8 +223,8 @@ set to
 is performed).
 Otherwise
 .I semncnt
-(the counter of processes waiting for this semaphore's value to increase)
-is incremented by one and the process sleeps until
+(the counter of threads waiting for this semaphore's value to increase)
+is incremented by one and the thread sleeps until
 one of the following occurs:
 .IP \(bu 3
 .I semval
@@ -238,7 +238,7 @@ is subtracted from
 .I semval
 and, if
 .B SEM_UNDO
-is specified for this operation, the system updates the process undo count
+is specified for this operation, the system updates the undo count
 .RI ( semadj )
 for this semaphore.
 .IP \(bu
@@ -249,7 +249,7 @@ fails, with
 set to
 .BR EIDRM .
 .IP \(bu
-The calling process catches a signal:
+The calling thread catches a signal:
 the value of
 .I semncnt
 is decremented and
@@ -272,7 +272,7 @@ On successful completion, the
 .I sempid
 value for each semaphore specified in the array pointed to by
 .I sops
-is set to the process ID of the calling process.
+is set to the caller's process ID.
 In addition, the
 .I sem_otime
 .\" and
@@ -282,7 +282,7 @@ is set to the current time.
 .BR semtimedop ()
 behaves identically to
 .BR semop ()
-except that in those cases were the calling process would sleep,
+except that in those cases were the calling thread would sleep,
 the duration of that sleep is limited by the amount of elapsed
 time specified by the
 .I timespec
@@ -364,7 +364,7 @@ of semaphores in the set.
 The semaphore set was removed.
 .TP
 .B EINTR
-While blocked in this system call, the process caught a signal; see
+While blocked in this system call, the thread caught a signal; see
 .BR signal (7).
 .TP
 .B EINVAL
@@ -493,7 +493,7 @@ as far as possible (i.e., to zero) and allowing process
 termination to proceed immediately.
 
 In kernels 2.6.x, x <= 10, there is a bug that in some circumstances
-prevents a process that is waiting for a semaphore value to become
+prevents a thread that is waiting for a semaphore value to become
 zero from being woken up when the value does actually become zero.
 This bug is fixed in kernel 2.6.11.
 .\" The bug report:
@@ -526,6 +526,7 @@ and then increment the semaphore value by one.
     }
 .fi
 .SH "SEE ALSO"
+.BR clone (2),
 .BR semctl (2),
 .BR semget (2),
 .BR sigaction (2),
diff --git a/man2/shutdown.2 b/man2/shutdown.2
index 94cedcf..7fdd338 100644
--- a/man2/shutdown.2
+++ b/man2/shutdown.2
@@ -74,6 +74,11 @@ is set appropriately.
 .I sockfd
 is not a valid descriptor.
 .TP
+.B EINVAL
+An invalid value was specified in
+.IR how
+(but see BUGS).
+.TP
 .B ENOTCONN
 The specified socket is not connected.
 .TP
@@ -93,6 +98,15 @@ have the value 0, 1, 2,
 respectively, and are defined in
 .I <sys/socket.h>
 since glibc-2.1.91.
+.SH BUGS
+As currently implemented,
+checks for the validity of
+.I how
+are done in domain-specific code, and not all domains perform these checks.
+.\" FIXME
+.\" https://bugzilla.kernel.org/show_bug.cgi?id=47111
+Most notably, UNIX domain sockets simply ignore invalid values;
+this may change in the future.
 .SH "SEE ALSO"
 .BR connect (2),
 .BR socket (2),
diff --git a/man2/sigaction.2 b/man2/sigaction.2
index 44ffc69..1c2eefa 100644
--- a/man2/sigaction.2
+++ b/man2/sigaction.2
@@ -219,8 +219,7 @@ If an alternate stack is not available, the default stack will be used.
 This flag is only meaningful when establishing a signal handler.
 .TP
 .BR SA_RESETHAND
-Restore the signal action to the default state once the signal handler
-has been called.
+Restore the signal action to the default upon entry to the signal handler.
 This flag is only meaningful when establishing a signal handler.
 .B SA_ONESHOT
 is an obsolete, nonstandard synonym for this flag.
diff --git a/man2/socketcall.2 b/man2/socketcall.2
index 4f2ac47..df2599a 100644
--- a/man2/socketcall.2
+++ b/man2/socketcall.2
@@ -43,7 +43,7 @@ Only standard library implementors and kernel hackers need to know about
 This call is specific to Linux, and should not be used in programs
 intended to be portable.
 .SH NOTES
-On a few architectures, for example ia64, there is no
+On a some architectures\(emfor example, x86-64 and ARM\(emthere is no
 .BR socketcall ()
 system call; instead
 .BR socket (2),
diff --git a/man2/stat.2 b/man2/stat.2
index 3ee122d..a66174c 100644
--- a/man2/stat.2
+++ b/man2/stat.2
@@ -340,17 +340,23 @@ A component of the path prefix of
 is not a directory.
 .TP
 .B EOVERFLOW
-.RB ( stat ())
 .I path
-refers to a file whose size cannot be represented in the type
-.IR off_t .
-This can occur when an application compiled on a 32-bit platform without
+or
+.I fd
+refers to a file whose size, inode number,
+or number of blocks cannot be represented in, respectively, the types
+.IR off_t ,
+.IR ino_t ,
+or
+.IR blkcnt_t .
+This error can occur when, for example,
+an application compiled on a 32-bit platform without
 .I -D_FILE_OFFSET_BITS=64
 calls
 .BR stat ()
 on a file whose size exceeds
 .I (1<<31)-1
-bits.
+bytes.
 .SH "CONFORMING TO"
 These system calls conform to SVr4, 4.3BSD, POSIX.1-2001.
 .\" SVr4 documents additional
diff --git a/man2/timer_settime.2 b/man2/timer_settime.2
index 91d6ca8..c6369c2 100644
--- a/man2/timer_settime.2
+++ b/man2/timer_settime.2
@@ -49,7 +49,7 @@ arms or disarms the timer identified by
 .IR timerid .
 The
 .I new_value
-argument is an
+argument is pointer to an
 .I itimerspec
 structure that specifies the new initial value and
 the new interval for the timer.
@@ -140,7 +140,8 @@ clock have no effect on relative timers based on that clock.
 
 If
 .I old_value
-is not NULL, then it returns the previous interval of the timer (in
+is not NULL, then it points to a buffer
+that is used to return the previous interval of the timer (in
 .IR old_value->it_interval )
 and the amount of time until the timer
 would previously have next expired (in
diff --git a/man2/times.2 b/man2/times.2
index ba45f10..6a017e7 100644
--- a/man2/times.2
+++ b/man2/times.2
@@ -173,7 +173,7 @@ combined with the fact that the returned value may overflow the range of
 .IR clock_t ,
 means that a portable application would be wise to avoid using this value.
 To measure changes in elapsed time, use
-.BR gettimeofday (2)
+.BR clock_gettime (2)
 instead.
 .\" .PP
 .\" On older systems the number of clock ticks per second is given
diff --git a/man2/wait4.2 b/man2/wait4.2
index c417a98..837f889 100644
--- a/man2/wait4.2
+++ b/man2/wait4.2
@@ -65,6 +65,12 @@ _BSD_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
+These functions are obsolete; use
+.BR waitpid (2)
+or
+.BR waitid (2)
+in new programs.
+
 The
 .BR wait3 ()
 and
@@ -131,6 +137,13 @@ As for
 .BR waitpid (2).
 .SH "CONFORMING TO"
 4.3BSD.
+
+SUSv1 included a specification of
+.BR wait3 ();
+SUSv2 included
+.BR wait3 (),
+but marked it LEGACY;
+SUSv3 removed it.
 .SH NOTES
 Including
 .I <sys/time.h>
diff --git a/man3/clock_getcpuclockid.3 b/man3/clock_getcpuclockid.3
index 5ea3565..85f8d30 100644
--- a/man3/clock_getcpuclockid.3
+++ b/man3/clock_getcpuclockid.3
@@ -30,7 +30,7 @@ clock_getcpuclockid \- obtain ID of a process CPU-time clock
 .BI "int clock_getcpuclockid(pid_t " pid ", clockid_t *" clock_id );
 .fi
 .sp
-Link with \fI\-lrt\fP.
+Link with \fI\-lrt\fP (only for glibc versions before 2.17).
 .sp
 .ad l
 .in -4n
diff --git a/man3/fts.3 b/man3/fts.3
index 5b53dae..5fde370 100644
--- a/man3/fts.3
+++ b/man3/fts.3
@@ -76,8 +76,10 @@ In general, directories are visited two distinguishable times; in preorder
 (before any of their descendants are visited) and in postorder (after all
 of their descendants have been visited).
 Files are visited once.
-It is possible to walk the hierarchy "logically" (ignoring symbolic links)
-or physically (visiting symbolic links), order the walk of the hierarchy or
+It is possible to walk the hierarchy "logically" (visiting the files that
+symbolic links point to)
+or physically (visiting the symbolic links themselves),
+order the walk of the hierarchy or
 prune and/or revisit portions of the hierarchy.
 .PP
 Two structures are defined (and typedef'd) in the include file
diff --git a/man3/getauxval.3 b/man3/getauxval.3
new file mode 100755
index 0000000..5dfc66a
--- /dev/null
+++ b/man3/getauxval.3
@@ -0,0 +1,213 @@
+.\" Copyright 2012 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" See also https://lwn.net/Articles/519085/
+.\"
+.SH NAME
+getauxval \- retrieve a value from the auxiliary vector
+.SH SYNOPSIS
+.nf
+.B #include <sys/auxv.h>
+.sp
+.BI "unsigned long getauxval(unsigned long " type );
+.fi
+.SH DESCRIPTION
+The
+.BR getauxval ()
+function retrieves values from the auxiliary vector,
+a mechanism that the kernel's ELF binary loader
+uses to pass certain information to
+user space when a program is executed.
+
+Each entry in the auxiliary vector consists of a pair of values:
+a type that identifies what this entry represents,
+and a value for that type.
+Given the argument
+.IR type ,
+.BR getauxval ()
+returns the corresponding value.
+
+The value returned for each
+.I type
+is given in the following list.
+Not all
+.I type
+values are present on all architectures.
+.TP
+.BR AT_BASE
+The base address of the program interpreter (usually, the dynamic linker).
+.TP
+.BR AT_BASE_PLATFORM
+A string identifying the real platform; may differ from
+.BR AT_PLATFORM
+(PowerPC only).
+.TP
+.BR AT_CLKTCK
+The frequency with which
+.BR times (2)
+counts.
+This value can also be obtained via
+.IR sysconf(_SC_CLK_TCK) .
+.TP
+.BR AT_DCACHEBSIZE
+The data cache block size.
+.TP
+.BR AT_EGID
+The effective group ID of the thread.
+.TP
+.BR AT_ENTRY
+The entry address of the executable.
+.TP
+.BR AT_EUID
+The effective user ID of the thread.
+.TP
+.BR AT_EXECFD
+File descriptor of program.
+.TP
+.BR AT_EXECFN
+Pathname used to execute program.
+.TP
+.BR AT_FLAGS
+Flags (unused).
+.TP
+.BR AT_FPUCW
+Used FPU control word (SuperH architecture only).
+This gives some information about the FPU initialization
+performed by the kernel.
+.TP
+.BR AT_GID
+The real group ID of the thread.
+.TP
+.BR AT_HWCAP
+A pointer to a multibyte mask of bits whose settings
+indicate detailed processor capabilities.
+The contents of the bit mask are hardware dependent
+(for example, see the kernel source file
+.IR arch/x86/include/asm/cpufeature.h
+for details relating to the Intel x86 architecture).
+A human-readable version of the same information is available via
+.IR /proc/cpuinfo .
+.TP
+.BR AT_ICACHEBSIZE
+The instruction cache block size.
+.\" .TP
+.\" .BR AT_IGNORE
+.\" .TP
+.\" .BR AT_IGNOREPPC
+.\" .TP
+.\" .BR AT_NOTELF
+.TP
+.BR AT_PAGESZ
+The system page size (the same value returned by
+.IR sysconf(_SC_PAGESIZE) .
+.TP
+.BR AT_PHDR
+The address of the program headers of the executable.
+.TP
+.BR AT_PHENT
+The size of program header entry.
+.TP
+.BR AT_PHNUM
+The number of program headers.
+.TP
+.BR AT_PLATFORM
+A pointer to a string that identifies the hardware platform
+that the program is running on.
+The dynamic linker uses this in the interpretation of
+.IR rpath
+values.
+.TP
+.BR AT_RANDOM
+The address of sixteen bytes containing a random value.
+.TP
+.BR AT_SECURE
+Has a nonzero value if this executable should be treated securely.
+Most commonly, a nonzero value indicates that the process is
+executing a set-user-ID or set-group-ID program; alternatively,
+a nonzero value may be triggered by a Linux Security Module.
+When this value is nonzero,
+the dynamic linker disables the use of certain environment variables (see
+.BR ld-linux.so (8))
+and glibc changes other aspects of its behavior.
+(See also
+.BR secure_getenv (3).)
+.TP
+.BR AT_SYSINFO
+The entry point to the system call function in the VDSO.
+Not present/needed on all architectures (e.g., absent on x86-64).
+.TP
+.BR AT_SYSINFO_EHDR
+The address of a page containing the Virtual Dynamic Shared Object (VDSO)
+that the kernel creates in order to provide fast implementations of
+certain system calls.
+.TP
+.BR AT_UCACHEBSIZE
+The unified cache block size.
+.TP
+.BR AT_UID
+The real user ID of the thread.
+.SH RETURN VALUE
+On success,
+.BR getauxval ()
+returns the value corresponding to
+.IR type .
+If
+.I type
+is not found, 0 is returned.
+.SH ERRORS
+No errors are diagnosed.
+.SH VERSIONS
+The
+.BR getauxval ()
+function was added to glibc in version 2.16.
+.SH "CONFORMING TO"
+This function is a nonstandard glibc extension.
+.SH NOTES
+The primary consumer of the information in the auxiliary vector
+is the dynamic linker
+.BR ld-linux.so (8).
+The auxiliary vector is a convenient and efficient shortcut
+that allows the kernel to communicate a certain set of standard
+information that the dynamic linker usually or always needs.
+In some cases, the same information could be obtained by system calls,
+but using the auxiliary vector is cheaper.
+
+The auxiliary vector resides just above the argument list and
+environment in the process address space.
+The auxiliary vector supplied to a program can be viewed by setting the
+.B LD_SHOW_AUXV
+environment variable when running a program:
+
+    $ LD_SHOW_AUXV=1 sleep 1
+
+The auxiliary vector of any process can (subject to file permissions)
+be obtained via
+.IR /proc/PID/auxv ;
+see
+.BR proc (5)
+for more information.
+.SH "SEE ALSO"
+.BR secure_getenv (3),
+.BR ld-linux.so (8)
+
+The kernel source file
+.IR Documentation/ABI/stable/vdso
diff --git a/man3/getenv.3 b/man3/getenv.3
index 1f8c0eb..bd6c595 100644
--- a/man3/getenv.3
+++ b/man3/getenv.3
@@ -1,5 +1,5 @@
 .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
-.\" and Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" and Copyright (C) 2007, 2012 Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
@@ -29,13 +29,23 @@
 .\" Modified Fri Feb 14 21:47:50 1997 by Andries Brouwer (aeb@cwi.nl)
 .\"
 .SH NAME
-getenv \- get an environment variable
+getenv, secure_getenv \- get an environment variable
 .SH SYNOPSIS
 .nf
 .B #include <stdlib.h>
 .sp
 .BI "char *getenv(const char *" name );
+
+.BI "char *secure_getenv(const char *" name );
 .fi
+.sp
+.in -4n
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.in
+.sp
+.BR secure_setenv ():
+_GNU_SOURCE
 .SH DESCRIPTION
 The
 .BR getenv ()
@@ -45,13 +55,47 @@ environment variable
 and returns a pointer to the corresponding
 .I value
 string.
+
+The GNU-specific
+.BR secure_getenv ()
+function is just like
+.BR getenv ()
+except that it returns NULL in cases where "secure execution" is required.
+Secure execution is required if one of the following conditions
+was true when the program run by the calling process was loaded:
+.IP * 3
+the process's effective user ID did not match its real user ID or
+the process's effective group ID did not match its real group ID
+(typically this is the result of executing a set-user-ID or
+set-group-ID program);
+.IP *
+the effective capability bit was set on the executable file; or
+.IP *
+the process has a nonempty permitted capability set.
+.PP
+Secure execution may also required if triggered
+by some Linux security modules.
+
+The
+.BR secure_getenv ()
+function is intended for use in general-purpose libraries
+to avoid vulnerabilities that could occur if
+set-user-ID or set-group-ID programs accidentally
+trusted the environment.
 .SH "RETURN VALUE"
 The
 .BR getenv ()
 function returns a pointer to the value in the
 environment, or NULL if there is no match.
 .SH "CONFORMING TO"
+.BR getenv ():
 SVr4, POSIX.1-2001, 4.3BSD, C89, C99.
+
+.BR secure_getenv ()
+is a GNU extension.
+.SH VERSIONS
+.BR secure_getenv ()
+first appeared in glibc 2.17.
 .SH NOTES
 The strings in the environment list are of the form \fIname=value\fP.
 
@@ -73,9 +117,17 @@ and can be modified by a subsequent call to
 .BR setenv (3),
 or
 .BR unsetenv (3).
+
+The "secure execution" mode of
+.BR secure_getenv ()
+is controlled by the
+.B AT_SECURE
+flag contained in the auxiliary vector passed from the kernel to user space.
 .SH "SEE ALSO"
 .BR clearenv (3),
+.BR getauxval (3)
 .BR putenv (3),
 .BR setenv (3),
 .BR unsetenv (3),
+.BR capabilities (7),
 .BR environ (7)
diff --git a/man3/gnu_get_libc_version.3 b/man3/gnu_get_libc_version.3
index b4af194..910ded0 100644
--- a/man3/gnu_get_libc_version.3
+++ b/man3/gnu_get_libc_version.3
@@ -25,7 +25,6 @@
 gnu_get_libc_version, gnu_get_libc_release \- get glibc version and release
 .SH SYNOPSIS
 .nf
-.BR "#define _GNU_SOURCE" "             /* See feature_test_macros(7) */"
 .B #include <gnu/libc-version.h>
 
 .B const char *gnu_get_libc_version(void);
diff --git a/man3/lockf.3 b/man3/lockf.3
index e215278..daa1fad 100644
--- a/man3/lockf.3
+++ b/man3/lockf.3
@@ -149,16 +149,15 @@ SVr4, POSIX.1-2001.
 .SH "SEE ALSO"
 .BR fcntl (2),
 .BR flock (2)
-.br
-There are also
+
 .I locks.txt
 and
 .I mandatory-locking.txt
-in the kernel source directory
-.IR Documentation/filesystems .
-(On older kernels, these files are directly under the
-.I Documentation/
+in the Linux kernel source directory
+.IR Documentation/filesystems
+(on older kernels, these files are directly under the
+.I Documentation
 directory, and
 .I mandatory-locking.txt
 is called
-.IR mandatory.txt .)
+.IR mandatory.txt )
diff --git a/man3/mcheck.3 b/man3/mcheck.3
index 39791c6..988cd80 100644
--- a/man3/mcheck.3
+++ b/man3/mcheck.3
@@ -202,8 +202,5 @@ main(int argc, char *argv[])
 .fi
 .SH SEE ALSO
 .BR malloc (3),
-.\" FIXME add SEE ALSO pointer from malloc(3) to here
-.\" FIXME add SEE ALSO pointer from mallopt(3) to here
-.\" FIXME add SEE ALSO pointer from mtrace(3) to here
 .BR mallopt (3),
 .BR mtrace (3)
diff --git a/man3/pthread_kill.3 b/man3/pthread_kill.3
index 44ea2ea..ee36176 100644
--- a/man3/pthread_kill.3
+++ b/man3/pthread_kill.3
@@ -38,7 +38,7 @@ function sends the signal
 .I sig
 to
 .IR thread ,
-another thread in the same process as the caller.
+a thread in the same process as the caller.
 The signal is asynchronously directed to
 .IR thread .
 
diff --git a/man3/pthread_sigqueue.3 b/man3/pthread_sigqueue.3
index 52a9560..613d4d2 100644
--- a/man3/pthread_sigqueue.3
+++ b/man3/pthread_sigqueue.3
@@ -44,13 +44,13 @@ The
 .BR pthread_sigqueue ()
 function performs a similar task to
 .BR sigqueue (3),
-but, rather than sending a signal to another process,
-it sends a signal to another thread in the same process as the
+but, rather than sending a signal to a process,
+it sends a signal to a thread in the same process as the
 calling thread.
 
 The
 .I thread
-argument is the ID of another thread in the same process as the caller.
+argument is the ID of a thread in the same process as the caller.
 The
 .I sig
 argument specifies the signal to be sent.
diff --git a/man3/puts.3 b/man3/puts.3
index 37f5c06..bc02a70 100644
--- a/man3/puts.3
+++ b/man3/puts.3
@@ -62,7 +62,7 @@ more than once.
 .PP
 .BI "putchar(" c );
 is equivalent to
-.BI "putc(" c , stdout ).
+.BI "putc(" c ", " stdout ).
 .PP
 .BR puts ()
 writes the string
diff --git a/man3/secure_getenv.3 b/man3/secure_getenv.3
new file mode 100644
index 0000000..5142bef
--- /dev/null
+++ b/man3/secure_getenv.3
@@ -0,0 +1 @@
+.so man3/getenv.3
diff --git a/man3/sigvec.3 b/man3/sigvec.3
index 9bacf09..8b70314 100644
--- a/man3/sigvec.3
+++ b/man3/sigvec.3
@@ -49,7 +49,7 @@ for programs that make use of the historical BSD signal API.
 This API is obsolete: new applications should use the POSIX signal API
 .RB ( sigaction (2),
 .BR sigprocmask (2),
-etc.)
+etc.).
 
 The
 .BR sigvec ()
@@ -89,7 +89,7 @@ structure has the following form:
 .nf
 
 struct sigvec {
-    void (*sv_handler)();  /* Signal disposition */
+    void (*sv_handler)(int); /* Signal disposition */
     int    sv_mask;          /* Signals to be blocked in handler */
     int    sv_flags;         /* Flags */
 };
@@ -99,10 +99,10 @@ struct sigvec {
 The
 .I sv_handler
 field specifies the disposition of the signal, and is either:
-the address of a signal handler function; or
-.B SIG_DFL
+the address of a signal handler function;
+.BR SIG_DFL ,
 meaning the default disposition applies for the signal; or
-.B SIG_IGN
+.BR SIG_IGN ,
 meaning that the signal is ignored.
 
 If
@@ -112,7 +112,7 @@ specifies the address of a signal handler, then
 specifies a mask of signals that are to be blocked while
 the handler is executing.
 In addition, the signal for which the handler is invoked is
-also blocked by default.
+also blocked.
 Attempts to block
 .B SIGKILL
 or
diff --git a/man3/syslog.3 b/man3/syslog.3
index 8cccfd0..8d8d6fa 100644
--- a/man3/syslog.3
+++ b/man3/syslog.3
@@ -174,9 +174,7 @@ This lets the configuration file specify that messages from different
 facilities will be handled differently.
 .TP 15
 .B LOG_AUTH
-security/authorization messages (DEPRECATED Use
-.B LOG_AUTHPRIV
-instead)
+security/authorization messages
 .TP
 .B LOG_AUTHPRIV
 security/authorization messages (private)
diff --git a/man3/ttyname.3 b/man3/ttyname.3
index b483d83..66170da 100644
--- a/man3/ttyname.3
+++ b/man3/ttyname.3
@@ -73,4 +73,5 @@ was too small to allow storing the pathname.
 4.2BSD, POSIX.1-2001.
 .SH "SEE ALSO"
 .BR fstat (2),
+.BR ctermid (3),
 .BR isatty (3)
diff --git a/man4/hpsa.4 b/man4/hpsa.4
index cce72b1..b607d92 100644
--- a/man4/hpsa.4
+++ b/man4/hpsa.4
@@ -181,12 +181,14 @@ for some examples.
 .BR cciss_vol_status (8),
 .BR hpacucli (8),
 .BR hpacuxe (8),
+
 .UR http://cciss.sf.net
 .UE ,
-and the Linux kernel source files
+and
 .I Documentation/scsi/hpsa.txt
 and
 .I Documentation/ABI/testing/sysfs-bus-pci-devices-cciss
+in the Linux kernel source tree
 .\" .SH AUTHORS
 .\" Don Brace, Steve Cameron, Tom Lawler, Mike Miller, Scott Teel
 .\" and probably some other people.
diff --git a/man5/motd.5 b/man5/motd.5
index c16b95f..fae38a7 100644
--- a/man5/motd.5
+++ b/man5/motd.5
@@ -27,23 +27,26 @@
 motd \- message of the day
 .SH DESCRIPTION
 The contents of \fI/etc/motd\fP are displayed by
-.BR login (1)
+.BR pam_motd (8)
 after a successful login but just before it executes the login shell.
 
 The abbreviation "motd" stands for "message of the day", and this file
 has been traditionally used for exactly that (it requires much less disk
 space than mail to all users).
 
-On Debian GNU/Linux this file is a symbolic link pointing to
-.IR /var/run/motd . 
-The contents of this file are regenerated upon every system boot
-based on the contents of
-.IR /etc/motd.tail .
+On Debian GNU/Linux, the content of 
+.I /run/motd.dynamic
+is also displayed.
+This file is generated by
+.I /etc/init.d/motd
+at boot.
 .SH FILES
 .I /etc/motd
 .br
-.I /etc/motd.tail
+.I /run/motd.dynamic
+.br
+.I /etc/init.d/motd
 .SH "SEE ALSO"
 .BR login (1),
-.BR motd.tail (5),
 .BR issue (5)
+.BR pam_motd(8)
diff --git a/man5/motd.tail.5 b/man5/motd.tail.5
deleted file mode 100644
index 5d13333..0000000
--- a/man5/motd.tail.5
+++ /dev/null
@@ -1,66 +0,0 @@
-.\" Copyright (c) 2007 Charles Plessy <charles-debian-nospam@plessy.org>, 28 Apr 2007 21:20:25 Asia/Tokyo
-.\"
-.\" This is free documentation; you can redistribute it and/or
-.\" modify it under the terms of the GNU General Public License as
-.\" published by the Free Software Foundation; either version 2 of
-.\" the License, or (at your option) any later version.
-.\"
-.\" The GNU General Public License's references to "object code"
-.\" and "executables" are to be interpreted as the output of any
-.\" document formatting or typesetting system, including
-.\" intermediate and printed output.
-.\"
-.\" This manual is distributed in the hope that it will be useful,
-.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
-.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-.\" GNU General Public License for more details.
-.\"
-.\" You should have received a copy of the GNU General Public
-.\" License along with this manual; if not, write to the Free
-.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
-.\" USA.
-.\" 
-.TH MOTD.TAIL 5 2007-04-28 "Debian" "Debian Administrator's Manual"
-.SH NAME
-motd.tail \- Template for building the system message of the day
-.SH DESCRIPTION
-On Debian systems, the system message of the day is rebuilt at each
-startup, in order to display an accurate
-information.  \fI/etc/motd.tail\fP is the file to edit permanent
-changes to the message of the day.
-.SH OVERVIEW
-The initiation script \fI/etc/init.d/bootlogs\fP prepends a line
-containing information about the system to \fI/etc/motd.tail\fP and
-stores the resulting file in \fI/var/run/motd\fP.  \fI/etc/motd\fP is a
-symbolic link to \fI/var/run/motd\fP.  This is done to prevent
-changes to
-.I /etc
-as the system can not assume
-.I /etc
-to be writable.
-
-Changes to
-.I /etc/motd
-effectively end up in a file under \fI/var/run\fP which will be
-regenerated upon reboot.
-
-A symbolic link to a different file, such as
-.I /etc/motd.static
-disables this behaviour.
-.SH FILES
-.TP
-.I /etc/init.d/bootlogs
-The initiation script which builds /var/run/motd
-.TP
-.I /etc/motd
-Symbolic link to the system message of the day at /var/run/motd
-.TP
-.I /etc/motd.tail
-Template for building the system message of the day
-.TP
-.I /var/run/motd
-System message of the day file rebuilt at each computer start
-.SH "SEE ALSO"
-.BR login (1),
-.BR issue (5),
-.BR motd (5).
diff --git a/man5/proc.5 b/man5/proc.5
index 416b79c..e76c268 100644
--- a/man5/proc.5
+++ b/man5/proc.5
@@ -722,8 +722,8 @@ terminal of the process.
 \fIflags\fP %u (%lu before Linux 2.6.22)
 The kernel flags word of the process.
 For bit meanings,
-see the PF_* defines in
-.IR <linux/sched.h> .
+see the PF_* defines in the kernel source file
+.IR include/linux/sched.h .
 Details depend on the kernel version.
 .TP
 \fIminflt\fP %lu
@@ -823,7 +823,10 @@ Since kernel 2.6.17, this field is no longer maintained,
 and is hard coded as 0.
 .TP
 \fIstarttime\fP %llu (was %lu before Linux 2.6)
-The time in jiffies the process started after system boot.
+The time the process started after system boot.
+In kernels before Linux 2.6, this value was expressed in jiffies.
+Since Linux 2.6, the value is expressed in clock ticks (divide by
+.IR sysconf(_SC_CLK_TCK) ).
 .TP
 \fIvsize\fP %lu
 Virtual memory size in bytes.
@@ -1398,6 +1401,247 @@ It is used by
 to report the amount of free and used memory (both physical and swap)
 on the system as well as the shared memory and buffers used by the
 kernel.
+Each line of the file consists of a parameter name, followed by a colon,
+the value of the parameter, and an option unit of measurement (e.g., "kB").
+The list below describes the parameter names and
+the format specifier required to read the field value.
+Except as noted below,
+all of the fields have been present since at least Linux 2.6.0.
+Some fileds are only displayed if the kernel was configured
+with various options; those dependencies are noted in the list.
+.RS
+.TP
+.IR MemTotal " %lu"
+Total usable RAM (i.e. physical RAM minus a few reserved
+bits and the kernel binary code).
+.TP
+.IR MemFree " %lu"
+The sum of
+.IR LowFree + HighFree .
+.TP
+.IR Buffers " %lu"
+Relatively temporary storage for raw disk blocks that
+shouldn't get tremendously large (20MB or so).
+.TP
+.IR Cached " %lu"
+In-memory cache for files read from the disk (the page cache).
+Doesn't include
+.IR SwapCached .
+.TP
+.IR SwapCached " %lu"
+Memory that once was swapped out, is swapped back in but
+still also is in the swap file.
+(If memory pressure is high, these pages
+don't need to be swapped out again because they are already
+in the swap file.
+This saves I/O.)
+.TP
+.IR Active " %lu"
+Memory that has been used more recently and usually not
+reclaimed unless absolutely necessary.
+.TP
+.IR Inactive " %lu"
+Memory which has been less recently used.
+It is more eligible to be reclaimed for other purposes.
+.TP
+.IR Active(anon) " %lu (since Linux 2.6.28)"
+[To be documented.]
+.TP
+.IR Inactive(anon) " %lu (since Linux 2.6.28)"
+[To be documented.]
+.TP
+.IR Active(file) " %lu (since Linux 2.6.28)"
+[To be documented.]
+.TP
+.IR Inactive(file) " %lu (since Linux 2.6.28)"
+[To be documented.]
+.TP
+.IR Unevictable " %lu (since Linux 2.6.28)"
+(From Linux 2.6.28 to 2.6.30,
+\fBCONFIG_UNEVICTABLE_LRU\fP was required.)
+[To be documented.]
+.TP
+.IR Mlock " %lu (since Linux 2.6.28)"
+(From Linux 2.6.28 to 2.6.30,
+\fBCONFIG_UNEVICTABLE_LRU\fP was required.)
+[To be documented.]
+.TP
+.IR HighTotal " %lu"
+(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
+Total amount of highmem.
+Highmem is all memory above ~860MB of physical memory.
+Highmem areas are for use by user-space programs,
+or for the page cache.
+The kernel must use tricks to access
+this memory, making it slower to access than lowmem.
+.TP
+.IR HighFree " %lu
+(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
+Amount of free highmem.
+.TP
+.IR LowTotal " %lu
+(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
+Total amount of lowmem.
+Lowmem is memory which can be used for everything that
+highmem can be used for, but it is also available for the
+kernel's use for its own data structures.
+Among many other things,
+it is where everything from
+.I Slab
+is allocated.
+Bad things happen when you're out of lowmem.
+.TP
+.IR LowFree " %lu
+(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
+Amount of free lowmem.
+.TP
+.IR MmapCopy " %lu (since Linux 2.6.29)"
+.RB ( CONFIG_MMU
+is required.)
+[To be documented.]
+.TP
+.IR SwapTotal " %lu"
+Total amount of swap space available.
+.TP
+.IR SwapFree " %lu"
+Memory which has been evicted from RAM,
+and is temporarily on the disk.
+.TP
+.IR Dirty " %lu"
+Memory which is waiting to get written back to the disk.
+.TP
+.IR Writeback " %lu"
+Memory which is actively being written back to the disk.
+.TP
+.IR AnonPages " %lu (since Linux 2.6.18)"
+Non-file backed pages mapped into user-space page tables.
+.TP
+.IR Mapped " %lu"
+Files which have been mmaped, such as libraries.
+.TP
+.IR Shmem " %lu (since Linux 2.6.32)"
+[To be documented.]
+.TP
+.IR Slab " %lu"
+In-kernel data structures cache.
+.TP
+.IR SReclaimable " %lu (since Linux 2.6.19)"
+Part of
+.IR Slab ,
+that might be reclaimed, such as caches.
+.TP
+.IR SUnreclaim " %lu (since Linux 2.6.19)"
+Part of
+.IR Slab ,
+that cannot be reclaimed on memory pressure.
+.TP
+.IR KernelStack " %lu (since Linux 2.6.32)"
+Amount of memory allocated to kernel stacks.
+.TP
+.IR PageTables " %lu (since Linux 2.6.18)"
+Amount of memory dedicated to the lowest level of page tables.
+.TP
+.IR Quicklists " %lu (since Linux 2.6.27)"
+(\fBCONFIG_QUICKLIST\fP is required.)
+[To be documented.]
+.TP
+.IR NFS_Unstable " %lu (since Linux 2.6.18)"
+NFS pages sent to the server, but not yet committed to stable storage.
+.TP
+.IR Bounce " %lu (since Linux 2.6.18)"
+Memory used for block device "bounce buffers".
+.TP
+.IR WritebackTmp " %lu (since Linux 2.6.26)"
+Memory used by FUSE for temporary writeback buffers.
+.TP
+.IR CommitLimit " %lu (since Linux 2.6.10)"
+Based on the overcommit ratio ('vm.overcommit_ratio'),
+this is the total amount of  memory currently available to
+be allocated on the system. This limit is only adhered to
+if strict overcommit accounting is enabled (mode 2 in
+.IR /proc/sys/vm/overcommit_ratio ).
+The
+.I CommitLimit
+is calculated using the following formula:
+
+    CommitLimit = (overcommit_ratio * Physical RAM) + Swap
+
+For example, on a system with 1GB of physical RAM and 7GB
+of swap with a
+.I overcommit_ratio
+of 30, this formula yields a
+.I CommitLimit
+of 7.3GB.
+For more details, see the memory overcommit documentation
+in the kernel source file
+.IR Documentation/vm/overcommit-accounting .
+.TP
+.IR Committed_AS " %lu"
+The amount of memory presently allocated on the system.
+The committed memory is a sum of all of the memory which
+has been allocated by processes, even if it has not been
+"used" by them as of yet.
+A process which allocates 1GB of memory (using
+.BR malloc (3)
+or similar), but only touches 300MB of that memory will only show up
+as using 300MB of memory even if it has the address space
+allocated for the entire 1GB.
+This 1GB is memory which has been "committed" to by the VM
+and can be used at any time by the allocating application.
+With strict overcommit enabled on the system (mode 2
+.IR /proc/sys/vm/overcommit_memory ),
+allocations which would exceed the
+.I CommitLimit
+(detailed above) will not be permitted.
+This is useful if one needs to guarantee that processes will not
+fail due to lack of memory once that memory has been successfully allocated.
+.TP
+.IR VmallocTotal " %lu"
+Total size of vmalloc memory area.
+.TP
+.IR VmallocUsed " %lu"
+Amount of vmalloc area which is used.
+.TP
+.IR VmallocChunk " %lu"
+Largest contiguous block of vmalloc area which is free.
+.TP
+.IR HardwareCorrupted " %lu (since Linux 2.6.32)"
+(\fBCONFIG_MEMORY_FAILURE\fP is required.)
+[To be documented.]
+.TP
+.IR AnonHugePages " %lu (since Linux 2.6.38)"
+(\fBCONFIG_TRANSPARENT_HUGEPAGE\fP is required.)
+Non-file backed huge pages mapped into userspace page tables.
+.TP
+.IR HugePages_Total " %lu"
+(\fBCONFIG_HUGETLB_PAGE\fP is required.)
+The size of the pool of huge pages.
+.TP
+.IR HugePages_Free " %lu"
+(\fBCONFIG_HUGETLB_PAGE\fP is required.)
+The number of huge pages in the pool that are not yet allocated.
+.TP
+.IR HugePages_Rsvd " %lu (since Linux 2.6.17)"
+(\fBCONFIG_HUGETLB_PAGE\fP is required.)
+This is the number of huge pages for
+which a commitment to allocate from the pool has been made,
+but no allocation has yet been made.
+These reserved huge pages
+guarantee that an application will be able to allocate a
+huge page from the pool of huge pages at fault time.
+.TP
+.IR HugePages_Surp " %lu (since Linux 2.56.24)"
+(\fBCONFIG_HUGETLB_PAGE\fP is required.)
+This is the number of huge pages in
+the pool above the value in
+.IR /proc/sys/vm/nr_hugepages .
+The maximum number of surplus huge pages is controlled by
+.IR /proc/sys/vm/nr_overcommit_hugepages .
+.TP
+.IR Hugepagesize " %lu"
+(\fBCONFIG_HUGETLB_PAGE\fP is required.)
+The size of huge pages.
+.RE
 .TP
 .I /proc/modules
 A text list of the modules that have been loaded by the system.
@@ -2029,6 +2273,86 @@ To determine the rounded-up value,
 display the contents of this file after assigning a value to it.
 The minimum value that can be assigned to this file is the system page size.
 .TP
+.IR /proc/sys/fs/protected_hardlinks " (since Linux 3.6)"
+.\" commit 800179c9b8a1e796e441674776d11cd4c05d61d7
+When the value in this file is 0,
+no restrictions are placed the creation of hard links
+(i.e., this is the historical behaviour before Linux 3.6).
+When the value in this file is 1,
+a hard link can be created to a target file
+only if one of the following conditions is true:
+.RS
+.IP * 3
+The caller has the
+.BR CAP_FOWNER
+capability.
+.IP *
+The file system UID of the process creating the link matches
+the owner (UID) of the target file
+(as described in
+.BR credentials (7),
+a process's file system UID is normally the same as its effective UID).
+.IP *
+All of the following conditions are true:
+.RS 4
+.IP \(bu 3
+the target is a regular file;
+.IP \(bu
+the target file does not have its set-user-ID permission bit enabled;
+.IP \(bu
+the target file does not have both its set-group-ID and
+group-executable permission bits enabled; and
+.IP \(bu
+the caller has permission to read and write the target file
+(either via the file's permissions mask or because it has
+suitable capabilities).
+.RE
+.RE
+.IP
+The default value in this file is 0.
+Setting the value to 1
+prevents a longstanding class of security issues caused by
+hard-link-based time-of-check, time-of-use races,
+most commonly seen in world-writable directories such as
+.IR /tmp .
+The common method of exploiting this flaw
+is to cross privilege boundaries when following a given hard link
+(i.e., a root process follows a hard link created by another user).
+Additionally, on systems without separated partitions,
+this stops unauthorized users from "pinning" vulnerable set-user-ID and
+set-group-ID files against being upgraded by
+the administrator, or linking to special files.
+.TP
+.IR /proc/sys/fs/protected_symlinks " (since Linux 3.6)"
+.\" commit 800179c9b8a1e796e441674776d11cd4c05d61d7
+When the value in this file is 0,
+no restrictions are placed on following symbolic links
+(i.e., this is the historical behaviour before Linux 3.6).
+When the value in this file is 1, symbolic links are followed only
+in the following circumstances:
+.RS
+.IP * 3
+the file system UID of the process following the link matches
+the owner (UID) of the symbolic link
+(as described in
+.BR credentials (7),
+a process's file system UID is normally the same as its effective UID);
+.IP *
+the link is not in a sticky world-writable directory; or
+.IP *
+the symbolic link and and its parent directory have the same owner (UID)
+.RE
+.IP
+A system call that fails to follow a symbolic link
+because of the above restrictions returns the error
+.BR EACCES
+in
+.IR errno .
+.IP
+The default value in this file is 0.
+Setting the value to 1 avoids a longstanding class of security issues
+based on time-of-check, time-of-use races when accessing symbolic links.
+.TP
 .IR /proc/sys/fs/suid_dumpable " (since Linux 2.6.13)"
 .\" The following is based on text from Documentation/sysctl/kernel.txt
 The value in this file determines whether core dump files are
@@ -2187,6 +2511,26 @@ the PowerPC htab
 is pruned
 each time the system hits the idle loop.
 .TP
+.IR /proc/sys/kernel/kptr_restrict " (since Linux 2.6.38)"
+.\" 455cd5ab305c90ffc422dd2e0fb634730942b257
+The value in this file determines whether kernel addresses are exposed via
+.I /proc
+files and other interfaces.
+A value of 0 in this file imposes no restrictions.
+If the value is 1, kernel pointers printed using the
+.I %pK
+format specifier will be replaced with zeros unless the user has the
+.BR CAP_SYSLOG
+capability.
+If the value is 2, kernel pointers printed using the
+.I %pK
+format specifier will be replaced with zeros regardless
+of the user's capabilities.
+The initial default value for this file was 1,
+but the default was changed
+.\" commit 411f05f123cbd7f8aa1edcae86970755a6e2a9d9
+to 0 in Linux 2.6.39.
+.TP
 .I /proc/sys/kernel/l2cr
 (PowerPC only) This file
 contains a flag that controls the L2 cache of G3 processor
@@ -2199,12 +2543,26 @@ This file contains the path for the kernel module loader.
 The default value is
 .IR /sbin/modprobe .
 The file is only present if the kernel is built with the
-.B CONFIG_KMOD
+.B CONFIG_MODULES
+.RB ( CONFIG_KMOD
+in Linux 2.6.26 and earlier)
 option enabled.
 It is described by the kernel source file
 .I Documentation/kmod.txt
 (only present in kernel 2.4 and earlier).
 .TP
+.IR /proc/sys/kernel/modules_disabled " (since Linux 2.6.31)"
+.\" 3d43321b7015387cfebbe26436d0e9d299162ea1
+.\" From Documentation/sysctl/kernel.txt
+A toggle value indicating if modules are allowed to be loaded
+in an otherwise modular kernel.
+This toggle defaults to off (0), but can be set true (1).
+Once true, modules can be neither loaded nor unloaded,
+and the toggle cannot be set back to false.
+The file is only present if the kernel is built with the
+.B CONFIG_MODULES
+option enabled.
+.TP
 .I /proc/sys/kernel/msgmax
 This file defines
 a system-wide limit specifying the maximum number of bytes in
diff --git a/man5/resolv.conf.5 b/man5/resolv.conf.5
index 17bcbf6..bfc9712 100644
--- a/man5/resolv.conf.5
+++ b/man5/resolv.conf.5
@@ -41,8 +41,9 @@ and the domain search path is constructed from the domain name.
 The different configuration options are:
 .TP
 \fBnameserver\fP Name server IP address
-Internet address (in dot notation) of a name server
-that the resolver should query.
+Internet address of a name server that the resolver should query,
+either an IPv4 address (in dot notation),
+or an IPv6 address in colon (and possibly dot) notation as per RFC 2373.
 Up to
 .B MAXNS
 (currently 3, see \fI<resolv.h>\fP) name servers may be listed,
diff --git a/man5/slabinfo.5 b/man5/slabinfo.5
index 016df7d..3310b9b 100644
--- a/man5/slabinfo.5
+++ b/man5/slabinfo.5
@@ -20,6 +20,15 @@
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
+.\" FIXME Over time, the slabinfo format has gone through
+.\" version changes. These should be documented:
+.\"
+.\"     slabinfo 1.0 - Linux 2.2 (precisely: 2.1.23)
+.\"     slabinfo 1.1 - Linux 2.4 (precisely: 2.4.0-test3)
+.\"     slabinfo 1.2 - Linux 2.5.45
+.\"     slabinfo 2.0 - Linux 2.6 (precisely: 2.5.71)
+.\"     slabinfo 2.1 - Linux 2.6.10
+.\"
 .SH NAME
 /proc/slabinfo \- Kernel slab allocator statistics
 .SH SYNOPSIS
diff --git a/man7/capabilities.7 b/man7/capabilities.7
index 16f54a4..1b4fd29 100644
--- a/man7/capabilities.7
+++ b/man7/capabilities.7
@@ -544,12 +544,23 @@ employ various privileged
 operations on virtual terminals.
 .TP
 .BR CAP_SYSLOG " (since Linux 2.6.37)"
+.IP * 3
 Perform privileged
 .BR syslog (2)
 operations.
 See
 .BR syslog (2)
 for information on which operations require privilege.
+.IP *
+View kernel addresses exposed via
+.I /proc
+and other interfaces when
+.IR /proc/sys/kernel/kptr_restrict
+has the value 1.
+(See the discussion of the
+.I kptr_restrict
+in
+.BR proc (5).)
 .TP
 .BR CAP_WAKE_ALARM " (since Linux 3.0)"
 Trigger something that will wake up the system (set
diff --git a/man7/ip.7 b/man7/ip.7
index 1157a28..b5ceaa5 100644
--- a/man7/ip.7
+++ b/man7/ip.7
@@ -1088,6 +1088,8 @@ does not work in some 2.2 kernels.
 .BR byteorder (3),
 .BR ipfw (4),
 .BR capabilities (7),
+.BR icmp (7),
+.BR ipv6 (7),
 .BR netlink (7),
 .BR raw (7),
 .BR socket (7),
diff --git a/man7/ipv6.7 b/man7/ipv6.7
index e00a3be..cc16ecf 100644
--- a/man7/ipv6.7
+++ b/man7/ipv6.7
@@ -140,7 +140,7 @@ structure.
 .\" FIXME IPV6_CHECKSUM is not documented, and probably should be
 .\" FIXME IPV6_JOIN_ANYCAST is not documented, and probably should be
 .\" FIXME IPV6_LEAVE_ANYCAST is not documented, and probably should be
-.\" FIXME IPV6_RECVPKTINFO is not documented, and probably should be
+.\" FIXME IPV6_PKTINFO is not documented, and probably should be
 .\" FIXME IPV6_2292PKTINFO is not documented, and probably should be
 .\" FIXME there are probably many other IPV6_* socket options that
 .\" should be documented
@@ -182,10 +182,13 @@ in an integer.
 Control whether the socket sees multicast packets that it has send itself.
 Argument is a pointer to boolean.
 .TP
-.B IPV6_PKTINFO
+.BR IPV6_RECVPKTINFO " (since Linux 2.6.14)"
 Set delivery of the
 .B IPV6_PKTINFO
 control message on incoming datagrams.
+Such control messages contain a
+.IR "struct in6_pktinfo" ,
+as per RFC 3542.
 Only allowed for
 .B SOCK_DGRAM
 or
diff --git a/man7/iso_8859-1.7 b/man7/iso_8859-1.7
index 60c5ee6..513e882 100644
--- a/man7/iso_8859-1.7
+++ b/man7/iso_8859-1.7
@@ -176,8 +176,6 @@ See
 (soft hyphen) and the standard ISO 8859-1 ("shy",
 paragraph 6.3.3)
 or the equivalent version from your national standardization body.
-.BR "ISO 8859-1:1987" ,
-paragraph 6.3.3.
 .SH "SEE ALSO"
 .BR ascii (7),
 .BR iso_8859-15 (7)
diff --git a/man7/man-pages.7 b/man7/man-pages.7
index 9525fdf..f379df7 100644
--- a/man7/man-pages.7
+++ b/man7/man-pages.7
@@ -207,6 +207,10 @@ See
 .BR man (7)
 for important details of the line(s) that should follow the
 \fB.SH NAME\fP command.
+All words in this line (including the word immediately
+following the "\\\-") should be in lowercase,
+except where English or technical terminological convention
+dictates otherwise.
 .TP
 .B SYNOPSIS
 briefly describes the command or function's interface.
@@ -389,6 +393,17 @@ ordered by section number and
 then alphabetically by name, possibly followed by
 other related pages or documents.
 Do not terminate this with a period.
+.IP
+Where the SEE ALSO list contains many long manual page names,
+to improve the visual result of the output, it may be useful to employ the
+.I .ad l
+(don't right justify)
+and
+.I .nh
+(dont hyphenate)
+directives.
+Hyphenation of individual page names can be prevented
+by preceding words with the string "\\%".
 .SS Font conventions
 .PP
 For functions, the arguments are always specified using italics,
diff --git a/man7/mdoc.7 b/man7/mdoc.7
index 28eac07..7e387b1 100644
--- a/man7/mdoc.7
+++ b/man7/mdoc.7
@@ -429,7 +429,7 @@ Special defines (such as the standards macro).
 .Xr man 7 ,
 .Xr man-pages 7
 .Sh COLOPHON
-This page is part of release 3.42 of the Linux
+This page is part of release 3.44 of the Linux
 .Em man-pages
 project.
 A description of the project,
diff --git a/man7/mdoc.samples.7 b/man7/mdoc.samples.7
index d9834b5..bdb64dc 100644
--- a/man7/mdoc.samples.7
+++ b/man7/mdoc.samples.7
@@ -2953,7 +2953,7 @@ and certainly should be able to.
 .Xr groff_mdoc 7 ,
 .Xr mdoc 7
 .Sh COLOPHON
-This page is part of release 3.42 of the Linux
+This page is part of release 3.44 of the Linux
 .Em man-pages
 project.
 A description of the project,
diff --git a/man7/time.7 b/man7/time.7
index 265961f..8c2189d 100644
--- a/man7/time.7
+++ b/man7/time.7
@@ -170,6 +170,18 @@ see
 .BR timerfd_create (2),
 and
 .BR timer_create (2).
+.SS Timer Slack
+Since Linux 2.6.28, it is possible to control the "timer slack"
+value for a thread.
+The timer slack is the length of time by
+which the kernel may delay the wake-up of certain
+system calls that block with a timeout.
+Permitting this delay allows the kernel to coallesce wake-up events,
+thus possibly reducing the number of system wake-ups and saving power.
+For more details, see the description of
+.B PR_SET_TIMERSLACK
+in
+.BR prctl (2).
 .SH "SEE ALSO"
 .BR date (1),
 .BR time (1),
diff --git a/man8/ld.so.8 b/man8/ld.so.8
index b5726d5..41a842c 100644
--- a/man8/ld.so.8
+++ b/man8/ld.so.8
@@ -39,8 +39,16 @@ support files and programs
 and
 .IR /etc/ld.so.conf .
 .LP
-The shared libraries needed by the program are searched for
-in the following order:
+When resolving library dependencies,
+the dynamic linker first inspects each dependency
+string to see if it contains a slash (this can occur if
+a library pathname containing slashes was specified at link time).
+If a slash is found, then the dependency string is interpreted as
+a (relative or absolute) pathname,
+and the library is loaded using that pathname.
+.LP
+If a library dependency does not contain a slash,
+then it is searched for in the following order:
 .IP o 3
 (ELF only) Using the directories specified in the
 DT_RPATH dynamic section attribute
@@ -99,7 +107,7 @@ and still find their own shared libraries.
 .\" it appears.
 .\"
 .\" There is also $PLATFORM.  This is a kind of wildcard
-.\" of directories related at AT_HWCAP.  To get an idea of the
+.\" of directories related to AT_PLATFORM.  To get an idea of the
 .\" places that $PLATFORM would match, look at the output of the
 .\" following:
 .\"
@@ -181,14 +189,18 @@ ELF libraries at execution-time.
 Similar to the
 .B PATH
 environment variable.
+Ignored in set-user-ID and set-group-ID programs.
 .TP
 .B LD_PRELOAD
-A whitespace-separated list of additional, user-specified, ELF shared
+A list of additional, user-specified, ELF shared
 libraries to be loaded before all others.
+The items of the list can be separated by spaces or colons.
 This can be used to selectively override functions in other shared libraries.
+The libraries are searched for using the rules given under DESCRIPTION.
 For set-user-ID/set-group-ID ELF binaries,
-only libraries in the standard search
-directories that are also set-user-ID will be loaded.
+preload pathnames containing slashes are ignored,
+and libraries in the standard search directories are loaded
+only if the set-user-ID permission bit is enabled on the library file.
 .TP
 .B LD_TRACE_LOADED_OBJECTS
 (ELF only)
@@ -407,6 +419,7 @@ functionality is available for executables compiled using libc version
 ELF functionality is available since Linux 1.1.52 and libc5.
 .SH SEE ALSO
 .BR ldd (1),
+.BR getauxval (3)
 .BR rtld-audit (7),
 .BR ldconfig (8)
 .\" .SH AUTHORS
[The following lists of changes regard files as different if they have
different names, permissions or owners.]

Files in second .deb but not in first
-------------------------------------
-rw-r--r--  root/root   /usr/share/doc/manpages/man-pages-3.44.Announce

Files in first .deb but not in second
-------------------------------------
-rw-r--r--  root/root   /usr/share/doc/manpages/man-pages-3.42.Announce
-rw-r--r--  root/root   /usr/share/man/man5/motd.tail.5.gz

Control files: lines which differ (wdiff format)
------------------------------------------------
Installed-Size: [-841-] {+851+}
Version: [-3.42-1-] {+3.44-1+}

[The following lists of changes regard files as different if they have
different names, permissions or owners.]

Files in second .deb but not in first
-------------------------------------
-rw-r--r--  root/root   /usr/share/man/man3/getauxval.3.gz
lrwxrwxrwx  root/root   /usr/share/man/man2/phys.2.gz -> unimplemented.2.gz
lrwxrwxrwx  root/root   /usr/share/man/man3/secure_getenv.3.gz -> getenv.3.gz

Control files: lines which differ (wdiff format)
------------------------------------------------
      may be found in the glibc-doc [-package).-] {+and glibc-doc-reference packages).+}
Installed-Size: [-1758-] {+1767+}
Version: [-3.42-1-] {+3.44-1+}

Reply to: