[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnumach] 01/01: Imported Upstream version 1.4+git20150102
From: |
Samuel Thibault |
Subject: |
[gnumach] 01/01: Imported Upstream version 1.4+git20150102 |
Date: |
Fri, 02 Jan 2015 19:50:47 +0000 |
This is an automated email from the git hooks/post-receive script.
sthibault pushed a commit to annotated tag upstream/1.4+git20150102
in repository gnumach.
commit 498080ae3c1778b93f1099226239659de76c7786
Author: Samuel Thibault <address@hidden>
Date: Fri Jan 2 18:43:51 2015 +0000
Imported Upstream version 1.4+git20150102
---
ChangeLog | 33 +++++++++++++++++++++++++++++++++
configure | 20 ++++++++++----------
doc/mach.info | 2 +-
doc/mach.info-1 | 4 ++--
doc/mach.info-2 | 2 +-
doc/stamp-vti | 4 ++--
doc/version.texi | 4 ++--
i386/i386/trap.c | 6 +++---
ipc/ipc_kmsg.c | 4 +---
ipc/ipc_kmsg.h | 24 +++++++++++++++++++-----
kern/pc_sample.c | 3 +++
version.m4 | 2 +-
12 files changed, 78 insertions(+), 30 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 3ec1c36..0da99b7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,36 @@
+2015-01-02 Samuel Thibault <address@hidden>
+
+ Handle kernel traps happening before starting userland
+ * i386/i386/trap.c (kernel_trap): When current_thread is null, assume
that
+ we are in kernel land.
+
+2014-12-16 Justus Winter <address@hidden>
+
+ kern: gracefully handle bogus sample pc sequence number
+ If a sequence number larger than the sample control sequence number is
+ supplied, `nsamples' becomes negative. Handle this gracefully.
+
+ * kern/pc_sample.c (get_sampled_pcs): Handle bogus sequence number.
+
+2014-12-16 Justus Winter <address@hidden>
+
+ ipc: guard test code with `MACH_IPC_TEST'
+ * ipc/ipc_kmsg.h (ikm_mark_bogus): New macro.
+ (ipc_kmsg_rmqueue_first_macro): Use `ikm_mark_bogus'.
+ * ipc/ipc_kmsg.c (ipc_kmsg_rmqueue): Likewise.
+
+2014-12-16 Justus Winter <address@hidden>
+
+ ipc: tune size of cached kernel message buffers
+ The previous limit was 256 bytes. That seems a little crummy by
+ todays standards, and we are frequently sending bigger packets
+ (e.g. every RPC containing a string_t on Hurd).
+
+ Use the page size for IKM_SAVED_KMSG_SIZE to make sure the page is
+ pinned to a single processor.
+
+ * ipc/ipc_kmsg.h (IKM_SAVED_KMSG_SIZE): Define to `PAGE_SIZE'.
+
2014-12-15 Samuel Thibault <address@hidden>
Make spl7 just clear IF instead of setting the PIC mask
diff --git a/configure b/configure
index de0aec6..f38cd80 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GNU Mach 1.4+git20141214.
+# Generated by GNU Autoconf 2.69 for GNU Mach 1.4+git20150102.
#
# Report bugs to <address@hidden>.
#
@@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GNU Mach'
PACKAGE_TARNAME='gnumach'
-PACKAGE_VERSION='1.4+git20141214'
-PACKAGE_STRING='GNU Mach 1.4+git20141214'
+PACKAGE_VERSION='1.4+git20150102'
+PACKAGE_STRING='GNU Mach 1.4+git20150102'
PACKAGE_BUGREPORT='address@hidden'
PACKAGE_URL=''
@@ -1584,7 +1584,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GNU Mach 1.4+git20141214 to adapt to many kinds of
systems.
+\`configure' configures GNU Mach 1.4+git20150102 to adapt to many kinds of
systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1654,7 +1654,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU Mach 1.4+git20141214:";;
+ short | recursive ) echo "Configuration of GNU Mach 1.4+git20150102:";;
esac
cat <<\_ACEOF
@@ -2002,7 +2002,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GNU Mach configure 1.4+git20141214
+GNU Mach configure 1.4+git20150102
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2094,7 +2094,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GNU Mach $as_me 1.4+git20141214, which was
+It was created by GNU Mach $as_me 1.4+git20150102, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2960,7 +2960,7 @@ fi
# Define the identity of the package.
PACKAGE='gnumach'
- VERSION='1.4+git20141214'
+ VERSION='1.4+git20150102'
# Some tools Automake needs.
@@ -12110,7 +12110,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GNU Mach $as_me 1.4+git20141214, which was
+This file was extended by GNU Mach $as_me 1.4+git20150102, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -12181,7 +12181,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //;
s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-GNU Mach config.status 1.4+git20141214
+GNU Mach config.status 1.4+git20150102
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/doc/mach.info b/doc/mach.info
index fe27860..e98437c 100644
--- a/doc/mach.info
+++ b/doc/mach.info
@@ -3,7 +3,7 @@ This is mach.info, produced by makeinfo version 5.2 from
mach.texi.
This file documents the GNU Mach microkernel.
This is edition 0.4, last updated on 10 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141214.
+Mach Reference Manual', for version 1.4+git20150102.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
diff --git a/doc/mach.info-1 b/doc/mach.info-1
index eafe7bb..ad7d2bb 100644
--- a/doc/mach.info-1
+++ b/doc/mach.info-1
@@ -3,7 +3,7 @@ This is mach.info, produced by makeinfo version 5.2 from
mach.texi.
This file documents the GNU Mach microkernel.
This is edition 0.4, last updated on 10 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141214.
+Mach Reference Manual', for version 1.4+git20150102.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
@@ -46,7 +46,7 @@ Main Menu
This file documents the GNU Mach microkernel.
This is edition 0.4, last updated on 10 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141214.
+Mach Reference Manual', for version 1.4+git20150102.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
diff --git a/doc/mach.info-2 b/doc/mach.info-2
index 5d6e0f4..2a9532a 100644
--- a/doc/mach.info-2
+++ b/doc/mach.info-2
@@ -3,7 +3,7 @@ This is mach.info, produced by makeinfo version 5.2 from
mach.texi.
This file documents the GNU Mach microkernel.
This is edition 0.4, last updated on 10 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141214.
+Mach Reference Manual', for version 1.4+git20150102.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
diff --git a/doc/stamp-vti b/doc/stamp-vti
index 4384f20..1c40ccd 100644
--- a/doc/stamp-vti
+++ b/doc/stamp-vti
@@ -1,4 +1,4 @@
@set UPDATED 10 November 2014
@set UPDATED-MONTH November 2014
address@hidden EDITION 1.4+git20141214
address@hidden VERSION 1.4+git20141214
address@hidden EDITION 1.4+git20150102
address@hidden VERSION 1.4+git20150102
diff --git a/doc/version.texi b/doc/version.texi
index 4384f20..1c40ccd 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,4 +1,4 @@
@set UPDATED 10 November 2014
@set UPDATED-MONTH November 2014
address@hidden EDITION 1.4+git20141214
address@hidden VERSION 1.4+git20141214
address@hidden EDITION 1.4+git20150102
address@hidden VERSION 1.4+git20150102
diff --git a/i386/i386/trap.c b/i386/i386/trap.c
index 9d4d43d..f1fe634 100644
--- a/i386/i386/trap.c
+++ b/i386/i386/trap.c
@@ -217,9 +217,9 @@ dump_ss(regs);
goto badtrap;
}
} else {
- assert(thread);
- map = thread->task->map;
- if (map == kernel_map) {
+ if (thread)
+ map = thread->task->map;
+ if (!thread || map == kernel_map) {
printf("kernel page fault at %08x:\n", subcode);
dump_ss(regs);
panic("kernel thread accessed user space!\n");
diff --git a/ipc/ipc_kmsg.c b/ipc/ipc_kmsg.c
index 71a0d74..66643fd 100644
--- a/ipc/ipc_kmsg.c
+++ b/ipc/ipc_kmsg.c
@@ -139,9 +139,7 @@ ipc_kmsg_rmqueue(
next->ikm_prev = prev;
prev->ikm_next = next;
}
- /* XXX Temporary debug logic */
- kmsg->ikm_next = IKM_BOGUS;
- kmsg->ikm_prev = IKM_BOGUS;
+ ikm_mark_bogus (kmsg);
}
/*
diff --git a/ipc/ipc_kmsg.h b/ipc/ipc_kmsg.h
index 07695fb..620785b 100644
--- a/ipc/ipc_kmsg.h
+++ b/ipc/ipc_kmsg.h
@@ -72,11 +72,24 @@ typedef struct ipc_kmsg {
#define ikm_plus_overhead(size) ((vm_size_t)((size) + IKM_OVERHEAD))
#define ikm_less_overhead(size) ((mach_msg_size_t)((size) -
IKM_OVERHEAD))
+#if MACH_IPC_TEST
/*
- * XXX For debugging.
+ * For debugging.
*/
#define IKM_BOGUS ((ipc_kmsg_t) 0xffffff10)
+#define ikm_mark_bogus(kmsg)
\
+MACRO_BEGIN \
+ (kmsg)->ikm_next = IKM_BOGUS; \
+ (kmsg)->ikm_prev = IKM_BOGUS; \
+MACRO_END
+
+#else /* MACH_IPC_TEST */
+
+#define ikm_mark_bogus(kmsg) ;
+
+#endif /* MACH_IPC_TEST */
+
/*
* We keep a per-processor cache of kernel message buffers.
* The cache saves the overhead/locking of using kalloc/kfree.
@@ -92,9 +105,12 @@ extern ipc_kmsg_t ipc_kmsg_cache[NCPUS];
/*
* The size of the kernel message buffers that will be cached.
* IKM_SAVED_KMSG_SIZE includes overhead; IKM_SAVED_MSG_SIZE doesn't.
+ *
+ * We use the page size for IKM_SAVED_KMSG_SIZE to make sure the
+ * page is pinned to a single processor.
*/
-#define IKM_SAVED_KMSG_SIZE ((vm_size_t) 256)
+#define IKM_SAVED_KMSG_SIZE PAGE_SIZE
#define IKM_SAVED_MSG_SIZE ikm_less_overhead(IKM_SAVED_KMSG_SIZE)
#define ikm_alloc(size)
\
@@ -195,9 +211,7 @@ MACRO_BEGIN
\
_next->ikm_prev = _prev; \
_prev->ikm_next = _next; \
} \
- /* XXX Debug paranoia */ \
- kmsg->ikm_next = IKM_BOGUS; \
- kmsg->ikm_prev = IKM_BOGUS; \
+ ikm_mark_bogus (kmsg); \
MACRO_END
#define ipc_kmsg_enqueue_macro(queue, kmsg)
\
diff --git a/kern/pc_sample.c b/kern/pc_sample.c
index 81b2056..fcb9d71 100644
--- a/kern/pc_sample.c
+++ b/kern/pc_sample.c
@@ -189,6 +189,9 @@ get_sampled_pcs(
(sampled_pc_array_t)cp->buffer,
(seqidx2 + 1) * sizeof(sampled_pc_t));
}
+ } else if (nsamples < 0) {
+ /* Bogus SEQNO supplied. */
+ nsamples = 0;
} else {
/* could either be zero because of overflow, or because
* we are being lied to. In either case, return nothing.
diff --git a/version.m4 b/version.m4
index 3cab496..fb3dcf1 100644
--- a/version.m4
+++ b/version.m4
@@ -1,4 +1,4 @@
m4_define([AC_PACKAGE_NAME],[GNU Mach])
-m4_define([AC_PACKAGE_VERSION],[1.4+git20141214])
+m4_define([AC_PACKAGE_VERSION],[1.4+git20150102])
m4_define([AC_PACKAGE_BUGREPORT],address@hidden)
m4_define([AC_PACKAGE_TARNAME],[gnumach])
--
Alioth's /usr/local/bin/git-commit-notice on
/srv/git.debian.org/git/pkg-hurd/gnumach.git