* [uml-devel] [patch 07/19] UML - Stop using libc asm/page.h
[not found] ` <20071115061415.GA7980@kroah.com>
@ 2007-11-15 6:14 ` Greg KH
2007-11-15 6:14 ` [uml-devel] [patch 08/19] UML - Fix kernel vs libc symbols clash Greg KH
` (2 subsequent siblings)
3 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2007-11-15 6:14 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Theodore Ts'o, Zwane Mwaikambo, uml-devel, Justin Forbes,
Domenico Andreoli, Chris Wedgwood, Randy Dunlap, Michael Krufky,
Chuck Ebbert, Dave Jones, Chuck Wolber, akpm, Jeff Dike, torvalds,
alan
[-- Attachment #1: uml-stop-using-libc-asm-page.h.patch --]
[-- Type: text/plain, Size: 3751 bytes --]
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Jeff Dike <jdike@addtoit.com>
commit 71f926f2ea61994470a53c9e11d3ef993197cada in mainline.
uml: stop using libc asm/page.h
Remove includes of asm/page.h from libc code. This header seems to be
disappearing, and UML doesn't make much use of it anyway.
The one use, PAGE_SHIFT in stub.h, is handled by copying the constant from the
kernel side of the house in common_offsets.h.
[ jdike - added arch/um/kernel/skas/clone.c for -stable ]
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/um/include/common-offsets.h | 1 +
arch/um/include/sysdep-i386/stub.h | 3 +--
arch/um/kernel/skas/clone.c | 1 -
arch/um/os-Linux/main.c | 1 -
arch/um/os-Linux/skas/mem.c | 1 -
arch/um/os-Linux/start_up.c | 1 -
arch/um/os-Linux/tt.c | 1 -
7 files changed, 2 insertions(+), 7 deletions(-)
--- a/arch/um/include/common-offsets.h
+++ b/arch/um/include/common-offsets.h
@@ -10,6 +10,7 @@ OFFSET(HOST_TASK_PID, task_struct, pid);
DEFINE(UM_KERN_PAGE_SIZE, PAGE_SIZE);
DEFINE(UM_KERN_PAGE_MASK, PAGE_MASK);
+DEFINE(UM_KERN_PAGE_SHIFT, PAGE_SHIFT);
DEFINE(UM_NSEC_PER_SEC, NSEC_PER_SEC);
DEFINE_STR(UM_KERN_EMERG, KERN_EMERG);
--- a/arch/um/include/sysdep-i386/stub.h
+++ b/arch/um/include/sysdep-i386/stub.h
@@ -9,7 +9,6 @@
#include <sys/mman.h>
#include <asm/ptrace.h>
#include <asm/unistd.h>
-#include <asm/page.h>
#include "stub-data.h"
#include "kern_constants.h"
#include "uml-config.h"
@@ -19,7 +18,7 @@ extern void stub_clone_handler(void);
#define STUB_SYSCALL_RET EAX
#define STUB_MMAP_NR __NR_mmap2
-#define MMAP_OFFSET(o) ((o) >> PAGE_SHIFT)
+#define MMAP_OFFSET(o) ((o) >> UM_KERN_PAGE_SHIFT)
static inline long stub_syscall0(long syscall)
{
--- a/arch/um/kernel/skas/clone.c
+++ b/arch/um/kernel/skas/clone.c
@@ -3,7 +3,6 @@
#include <sys/mman.h>
#include <sys/time.h>
#include <asm/unistd.h>
-#include <asm/page.h>
#include "ptrace_user.h"
#include "skas.h"
#include "stub-data.h"
--- a/arch/um/os-Linux/main.c
+++ b/arch/um/os-Linux/main.c
@@ -12,7 +12,6 @@
#include <sys/resource.h>
#include <sys/mman.h>
#include <sys/user.h>
-#include <asm/page.h>
#include "kern_util.h"
#include "as-layout.h"
#include "mem_user.h"
--- a/arch/um/os-Linux/skas/mem.c
+++ b/arch/um/os-Linux/skas/mem.c
@@ -9,7 +9,6 @@
#include <unistd.h>
#include <sys/mman.h>
#include <sys/wait.h>
-#include <asm/page.h>
#include <asm/unistd.h>
#include "mem_user.h"
#include "mem.h"
--- a/arch/um/os-Linux/start_up.c
+++ b/arch/um/os-Linux/start_up.c
@@ -19,7 +19,6 @@
#include <sys/mman.h>
#include <sys/resource.h>
#include <asm/unistd.h>
-#include <asm/page.h>
#include <sys/types.h>
#include "kern_util.h"
#include "user.h"
--- a/arch/um/os-Linux/tt.c
+++ b/arch/um/os-Linux/tt.c
@@ -17,7 +17,6 @@
#include <sys/mman.h>
#include <asm/ptrace.h>
#include <asm/unistd.h>
-#include <asm/page.h>
#include "kern_util.h"
#include "user.h"
#include "signal_kern.h"
--
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* [uml-devel] [patch 08/19] UML - Fix kernel vs libc symbols clash
[not found] ` <20071115061415.GA7980@kroah.com>
2007-11-15 6:14 ` [uml-devel] [patch 07/19] UML - Stop using libc asm/page.h Greg KH
@ 2007-11-15 6:14 ` Greg KH
2007-11-15 6:14 ` [uml-devel] [patch 09/19] UML - stop using libc asm/user.h Greg KH
2007-11-15 6:14 ` [uml-devel] [patch 10/19] UML - kill subprocesses on exit Greg KH
3 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2007-11-15 6:14 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Theodore Ts'o, Zwane Mwaikambo, uml-devel, Justin Forbes,
Domenico Andreoli, Chris Wedgwood, Randy Dunlap, Michael Krufky,
Chuck Ebbert, Dave Jones, Chuck Wolber, akpm, Jeff Dike, torvalds,
alan
[-- Attachment #1: uml-fix-kernel-vs-libc-symbols-clash.patch --]
[-- Type: text/plain, Size: 1663 bytes --]
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Jeff Dike <jdike@addtoit.com>
commit 818f6ef407b448cef63294b9d0f6f8a2af9cb817 in mainline.
uml: fix an IPV6 libc vs kernel symbol clash
On some systems, with IPV6 configured, there is a clash between the kernel's
in6addr_any and the one in libc.
This is handled in the usual (gross) way of defining the kernel symbol out of
the way on the gcc command line.
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/um/Makefile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/arch/um/Makefile
+++ b/arch/um/Makefile
@@ -60,7 +60,8 @@ SYS_DIR := $(ARCH_DIR)/include/sysdep-$
CFLAGS += $(CFLAGS-y) -D__arch_um__ -DSUBARCH=\"$(SUBARCH)\" \
$(ARCH_INCLUDE) $(MODE_INCLUDE) -Dvmap=kernel_vmap \
- -Din6addr_loopback=kernel_in6addr_loopback
+ -Din6addr_loopback=kernel_in6addr_loopback \
+ -Din6addr_any=kernel_in6addr_any
AFLAGS += $(ARCH_INCLUDE)
--
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* [uml-devel] [patch 09/19] UML - stop using libc asm/user.h
[not found] ` <20071115061415.GA7980@kroah.com>
2007-11-15 6:14 ` [uml-devel] [patch 07/19] UML - Stop using libc asm/page.h Greg KH
2007-11-15 6:14 ` [uml-devel] [patch 08/19] UML - Fix kernel vs libc symbols clash Greg KH
@ 2007-11-15 6:14 ` Greg KH
2007-11-15 6:14 ` [uml-devel] [patch 10/19] UML - kill subprocesses on exit Greg KH
3 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2007-11-15 6:14 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Theodore Ts'o, Zwane Mwaikambo, uml-devel, Justin Forbes,
Domenico Andreoli, Chris Wedgwood, Randy Dunlap, Michael Krufky,
Chuck Ebbert, Dave Jones, Chuck Wolber, akpm, Jeff Dike, torvalds,
alan
[-- Attachment #1: uml-stop-using-libc-asm-user.h.patch --]
[-- Type: text/plain, Size: 2939 bytes --]
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Jeff Dike <jdike@addtoit.com>
commit 189872f968def833727b6bfef83ebd7440c538e6 in mainline.
uml: don't use glibc asm/user.h
Stop including asm/user.h from libc - it seems to be disappearing from
distros. It's replaced with sys/user.h which defines user_fpregs_struct and
user_fpxregs_struct instead of user_i387_struct and struct user_fxsr_struct on
i386.
As a bonus, on x86_64, I get to dump some stupid typedefs which were needed in
order to get asm/user.h to compile.
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/um/sys-i386/user-offsets.c | 6 +++---
arch/um/sys-x86_64/user-offsets.c | 9 +--------
2 files changed, 4 insertions(+), 11 deletions(-)
--- a/arch/um/sys-i386/user-offsets.c
+++ b/arch/um/sys-i386/user-offsets.c
@@ -2,9 +2,9 @@
#include <stddef.h>
#include <signal.h>
#include <sys/poll.h>
+#include <sys/user.h>
#include <sys/mman.h>
#include <asm/ptrace.h>
-#include <asm/user.h>
#define DEFINE(sym, val) \
asm volatile("\n->" #sym " %0 " #val : : "i" (val))
@@ -48,8 +48,8 @@ void foo(void)
OFFSET(HOST_SC_FP_ST, _fpstate, _st);
OFFSET(HOST_SC_FXSR_ENV, _fpstate, _fxsr_env);
- DEFINE_LONGS(HOST_FP_SIZE, sizeof(struct user_i387_struct));
- DEFINE_LONGS(HOST_XFP_SIZE, sizeof(struct user_fxsr_struct));
+ DEFINE_LONGS(HOST_FP_SIZE, sizeof(struct user_fpregs_struct));
+ DEFINE_LONGS(HOST_XFP_SIZE, sizeof(struct user_fpxregs_struct));
DEFINE(HOST_IP, EIP);
DEFINE(HOST_SP, UESP);
--- a/arch/um/sys-x86_64/user-offsets.c
+++ b/arch/um/sys-x86_64/user-offsets.c
@@ -3,17 +3,10 @@
#include <signal.h>
#include <sys/poll.h>
#include <sys/mman.h>
+#include <sys/user.h>
#define __FRAME_OFFSETS
#include <asm/ptrace.h>
#include <asm/types.h>
-/* For some reason, x86_64 defines u64 and u32 only in <pci/types.h>, which I
- * refuse to include here, even though they're used throughout the headers.
- * These are used in asm/user.h, and that include can't be avoided because of
- * the sizeof(struct user_regs_struct) below.
- */
-typedef __u64 u64;
-typedef __u32 u32;
-#include <asm/user.h>
#define DEFINE(sym, val) \
asm volatile("\n->" #sym " %0 " #val : : "i" (val))
--
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* [uml-devel] [patch 10/19] UML - kill subprocesses on exit
[not found] ` <20071115061415.GA7980@kroah.com>
` (2 preceding siblings ...)
2007-11-15 6:14 ` [uml-devel] [patch 09/19] UML - stop using libc asm/user.h Greg KH
@ 2007-11-15 6:14 ` Greg KH
3 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2007-11-15 6:14 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Theodore Ts'o, Zwane Mwaikambo, uml-devel, Justin Forbes,
Domenico Andreoli, Chris Wedgwood, Randy Dunlap, Michael Krufky,
Chuck Ebbert, Dave Jones, Chuck Wolber, akpm, Jeff Dike, torvalds,
Lepton Wu, alan
[-- Attachment #1: uml-kill-subprocesses-on-exit.patch --]
[-- Type: text/plain, Size: 3566 bytes --]
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Lepton Wu <ytht.net@gmail.com>
commit a24864a1d52a97e345a6bd4862a057f98364d098
uml: definitively kill subprocesses on panic
In a stock 2.6.22.6 kernel, poweroff a user mode linux guest (2.6.22.6 running
in skas0 mode) will halt the host linux. I think the reason is the kernel
thread abort because of a bug. Then the sys_reboot in process of user mode
linux guest is not trapped by the user mode linux kernel and is executed by
host. I think it is better to make sure all of our children process to quit
when user mode linux kernel abort.
[ jdike - the kernel process needs to ignore SIGTERM, plus the waitpid/kill
loop is needed to make sure that all of our children are dead before the
kernel exits ]
Signed-off-by: Lepton Wu <ytht.net@gmail.com>
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/um/os-Linux/skas/process.c | 2 +-
arch/um/os-Linux/util.c | 38 ++++++++++++++++++++++++++++++++++++++
2 files changed, 39 insertions(+), 1 deletion(-)
--- a/arch/um/os-Linux/skas/process.c
+++ b/arch/um/os-Linux/skas/process.c
@@ -182,7 +182,7 @@ static int userspace_tramp(void *stack)
ptrace(PTRACE_TRACEME, 0, 0, 0);
- init_new_thread_signals();
+ signal(SIGTERM, SIG_DFL);
err = set_interval(1);
if(err)
panic("userspace_tramp - setting timer failed, errno = %d\n",
--- a/arch/um/os-Linux/util.c
+++ b/arch/um/os-Linux/util.c
@@ -105,6 +105,44 @@ int setjmp_wrapper(void (*proc)(void *,
void os_dump_core(void)
{
+ int pid;
+
signal(SIGSEGV, SIG_DFL);
+
+ /*
+ * We are about to SIGTERM this entire process group to ensure that
+ * nothing is around to run after the kernel exits. The
+ * kernel wants to abort, not die through SIGTERM, so we
+ * ignore it here.
+ */
+
+ signal(SIGTERM, SIG_IGN);
+ kill(0, SIGTERM);
+ /*
+ * Most of the other processes associated with this UML are
+ * likely sTopped, so give them a SIGCONT so they see the
+ * SIGTERM.
+ */
+ kill(0, SIGCONT);
+
+ /*
+ * Now, having sent signals to everyone but us, make sure they
+ * die by ptrace. Processes can survive what's been done to
+ * them so far - the mechanism I understand is receiving a
+ * SIGSEGV and segfaulting immediately upon return. There is
+ * always a SIGSEGV pending, and (I'm guessing) signals are
+ * processed in numeric order so the SIGTERM (signal 15 vs
+ * SIGSEGV being signal 11) is never handled.
+ *
+ * Run a waitpid loop until we get some kind of error.
+ * Hopefully, it's ECHILD, but there's not a lot we can do if
+ * it's something else. Tell os_kill_ptraced_process not to
+ * wait for the child to report its death because there's
+ * nothing reasonable to do if that fails.
+ */
+
+ while ((pid = waitpid(-1, NULL, WNOHANG)) > 0)
+ os_kill_ptraced_process(pid, 0);
+
abort();
}
--
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-11-15 6:16 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20071115054813.977066477@mini.kroah.org>
[not found] ` <20071115061415.GA7980@kroah.com>
2007-11-15 6:14 ` [uml-devel] [patch 07/19] UML - Stop using libc asm/page.h Greg KH
2007-11-15 6:14 ` [uml-devel] [patch 08/19] UML - Fix kernel vs libc symbols clash Greg KH
2007-11-15 6:14 ` [uml-devel] [patch 09/19] UML - stop using libc asm/user.h Greg KH
2007-11-15 6:14 ` [uml-devel] [patch 10/19] UML - kill subprocesses on exit Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox