[PATCH] UML: add generic BUG support
The BUG changes in -mm3 need some arch support. This patch adds the UML support needed. For the most part, it was stolen from the underlying architecture. The exception is the kernel eip < PAGE_OFFSET test, which is wrong for skas mode UMLs. Signed-off-by: Jeff Dike <jdike@addtoit.com> Cc: Jeremy Fitzhardinge <jeremy@goop.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
c31a0bf3e1
commit
e182c965b6
@ -47,6 +47,11 @@ config GENERIC_CALIBRATE_DELAY
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config GENERIC_BUG
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
depends on BUG
|
||||||
|
|
||||||
# Used in kernel/irq/manage.c and include/linux/irq.h
|
# Used in kernel/irq/manage.c and include/linux/irq.h
|
||||||
config IRQ_RELEASE_METHOD
|
config IRQ_RELEASE_METHOD
|
||||||
bool
|
bool
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
obj-y = bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \
|
obj-y = bug.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \
|
||||||
ptrace_user.o setjmp.o signal.o sigcontext.o syscalls.o sysrq.o \
|
ptrace_user.o setjmp.o signal.o sigcontext.o syscalls.o sysrq.o \
|
||||||
sys_call_table.o tls.o
|
sys_call_table.o tls.o
|
||||||
|
|
||||||
|
20
arch/um/sys-i386/bug.c
Normal file
20
arch/um/sys-i386/bug.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Jeff Dike (jdike@addtoit.com)
|
||||||
|
* Licensed under the GPL V2
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/uaccess.h>
|
||||||
|
|
||||||
|
/* Mostly copied from i386/x86_86 - eliminated the eip < PAGE_OFFSET because
|
||||||
|
* that's not relevent in skas mode.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int is_valid_bugaddr(unsigned long eip)
|
||||||
|
{
|
||||||
|
unsigned short ud2;
|
||||||
|
|
||||||
|
if (probe_kernel_address((unsigned short __user *)eip, ud2))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return ud2 == 0x0b0f;
|
||||||
|
}
|
@ -4,7 +4,7 @@
|
|||||||
# Licensed under the GPL
|
# Licensed under the GPL
|
||||||
#
|
#
|
||||||
|
|
||||||
obj-y = bugs.o delay.o fault.o ldt.o mem.o ptrace.o ptrace_user.o \
|
obj-y = bug.o bugs.o delay.o fault.o ldt.o mem.o ptrace.o ptrace_user.o \
|
||||||
setjmp.o sigcontext.o signal.o syscalls.o syscall_table.o sysrq.o \
|
setjmp.o sigcontext.o signal.o syscalls.o syscall_table.o sysrq.o \
|
||||||
ksyms.o tls.o
|
ksyms.o tls.o
|
||||||
|
|
||||||
|
20
arch/um/sys-x86_64/bug.c
Normal file
20
arch/um/sys-x86_64/bug.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2006 Jeff Dike (jdike@addtoit.com)
|
||||||
|
* Licensed under the GPL V2
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/uaccess.h>
|
||||||
|
|
||||||
|
/* Mostly copied from i386/x86_86 - eliminated the eip < PAGE_OFFSET because
|
||||||
|
* that's not relevent in skas mode.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int is_valid_bugaddr(unsigned long eip)
|
||||||
|
{
|
||||||
|
unsigned short ud2;
|
||||||
|
|
||||||
|
if (probe_kernel_address((unsigned short __user *)eip, ud2))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return ud2 == 0x0b0f;
|
||||||
|
}
|
@ -1,4 +1,6 @@
|
|||||||
#ifndef __UM_BUG_H
|
#ifndef __UM_BUG_H
|
||||||
#define __UM_BUG_H
|
#define __UM_BUG_H
|
||||||
#include <asm-generic/bug.h>
|
|
||||||
|
#include <asm/arch/bug.h>
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user