svn commit: r200738 - in stable/8: crypto/openssh
usr.sbin/cron/cron usr.sbin/inetd usr.sbin/syslogd
Attilio Rao
attilio at FreeBSD.org
Sat Dec 19 19:35:53 UTC 2009
Author: attilio
Date: Sat Dec 19 19:35:53 2009
New Revision: 200738
URL: http://svn.freebsd.org/changeset/base/200738
Log:
MFC r199804:
Avoid sshd, crond, inetd and syslogd to be killed in an high-pressure
swapping environment.
Sponsored by: Sandvine Incorporated
Modified:
stable/8/crypto/openssh/sshd.c
stable/8/usr.sbin/cron/cron/cron.c
stable/8/usr.sbin/inetd/inetd.c
stable/8/usr.sbin/syslogd/syslogd.c
Directory Properties:
stable/8/crypto/openssh/ (props changed)
stable/8/usr.sbin/cron/ (props changed)
stable/8/usr.sbin/inetd/ (props changed)
stable/8/usr.sbin/syslogd/ (props changed)
Modified: stable/8/crypto/openssh/sshd.c
==============================================================================
--- stable/8/crypto/openssh/sshd.c Sat Dec 19 19:30:27 2009 (r200737)
+++ stable/8/crypto/openssh/sshd.c Sat Dec 19 19:35:53 2009 (r200738)
@@ -47,6 +47,7 @@ __RCSID("$FreeBSD$");
#include <sys/types.h>
#include <sys/ioctl.h>
+#include <sys/mman.h>
#include <sys/socket.h>
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
@@ -1292,6 +1293,10 @@ main(int ac, char **av)
/* Initialize configuration options to their default values. */
initialize_server_options(&options);
+ /* Avoid killing the process in high-pressure swapping environments. */
+ if (madvise(NULL, 0, MADV_PROTECT) != 0)
+ debug("madvise(): %.200s", strerror(errno));
+
/* Parse command-line arguments. */
while ((opt = getopt(ac, av, "f:p:b:k:h:g:u:o:C:dDeiqrtQRT46")) != -1) {
switch (opt) {
Modified: stable/8/usr.sbin/cron/cron/cron.c
==============================================================================
--- stable/8/usr.sbin/cron/cron/cron.c Sat Dec 19 19:30:27 2009 (r200737)
+++ stable/8/usr.sbin/cron/cron/cron.c Sat Dec 19 19:35:53 2009 (r200738)
@@ -24,6 +24,7 @@ static const char rcsid[] =
#include "cron.h"
+#include <sys/mman.h>
#include <sys/signal.h>
#if SYS_TIME_H
# include <sys/time.h>
@@ -134,6 +135,9 @@ main(argc, argv)
}
}
+ if (madvise(NULL, 0, MADV_PROTECT) != 0)
+ log_it("CRON", getpid(), "WARNING", "madvise() failed");
+
pidfile_write(pfh);
database.head = NULL;
database.tail = NULL;
Modified: stable/8/usr.sbin/inetd/inetd.c
==============================================================================
--- stable/8/usr.sbin/inetd/inetd.c Sat Dec 19 19:30:27 2009 (r200737)
+++ stable/8/usr.sbin/inetd/inetd.c Sat Dec 19 19:35:53 2009 (r200738)
@@ -110,6 +110,7 @@ __FBSDID("$FreeBSD$");
*/
#include <sys/param.h>
#include <sys/ioctl.h>
+#include <sys/mman.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <sys/resource.h>
@@ -497,6 +498,9 @@ main(int argc, char **argv)
}
}
+ if (madvise(NULL, 0, MADV_PROTECT) != 0)
+ syslog(LOG_WARNING, "madvise() failed: %s", strerror(errno));
+
for (i = 0; i < PERIPSIZE; ++i)
LIST_INIT(&proctable[i]);
Modified: stable/8/usr.sbin/syslogd/syslogd.c
==============================================================================
--- stable/8/usr.sbin/syslogd/syslogd.c Sat Dec 19 19:30:27 2009 (r200737)
+++ stable/8/usr.sbin/syslogd/syslogd.c Sat Dec 19 19:35:53 2009 (r200738)
@@ -77,6 +77,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/ioctl.h>
+#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/socket.h>
@@ -352,6 +353,9 @@ main(int argc, char *argv[])
pid_t ppid = 1, spid;
socklen_t len;
+ if (madvise(NULL, 0, MADV_PROTECT) != 0)
+ dprintf("madvise() failed: %s\n", strerror(errno));
+
bindhostname = NULL;
while ((ch = getopt(argc, argv, "468Aa:b:cCdf:kl:m:nop:P:sS:Tuv"))
!= -1)
More information about the svn-src-stable
mailing list